为每个数据存储创建聚合器实例

时间:2016-02-04 13:19:05

标签: spring-integration

是否可以为每个新的唯一关联ID提供spring聚合器的实例?为每个唯一的相关ID创建MessageStore,但我想知道是否也可以为聚合器提供1:1实例:MessageStore。

我想根据从传入消息中提取的内容在聚合器类中拥有实例值,这有助于我确定每个MessageStore的发布策略。

更新:术语已更正。

1 个答案:

答案 0 :(得分:0)

没有单独的数据存储区"对于每个correlationId。

聚合器使用默认情况下在内存中的MessageGroupStore,但可以是多个持久性MessageGroupStores之一。

每个correlationId都会获得一个新的MessageGroup,该MessageGroupStore存储在Map中。

您不能为每个组创建POJO聚合器类的新实例;如果你有状态你需要管理,你需要使用关联策略键入的List<Message<?>>来保持该状态而不是简单的字段。

保证只有一个线程可以同时为特定组调用您的POJO。

您可能需要更改发布策略以获取public function up() { Schema::table('users', function (Blueprint $table) { $table->unsignedInteger('user_id')->nullable()->change(); }); } public function down() { Schema::table('users', function (Blueprint $table) { $table->unsignedInteger('user_id')->nullable(false)->change(); }); } ,以便您可以确定组ID(通常是correlationId,但可以是您的关联策略创建的任何内容)。