【问题标题】:How do I make sure my application only processes 1 message at a time?如何确保我的应用程序一次只处理 1 条消息?
【发布时间】:2019-06-24 22:54:32
【问题描述】:

我有一个 spring-integration 应用程序,它使用消息驱动通道适配器从 Websphere MQ 队列接收 xml 消息,然后将此消息传递到 spring 集成通道(包含)以存储到数据库中。

如何确保一次只处理 1 条消息,即如果前面的消息没有到达特定端点(在我的例子中是服务激活器),则无法处理任何消息?

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    如果您不使用任何队列或执行器通道,并且将默认适配器并发设置为 1,则整个流程将在单个容器线程上运行。

    因此,一次只会处理一条消息。

    【讨论】:

    • 那么消息驱动通道适配器的目的地是一个MQQueue,这是否意味着我想要的无法实现?
    • 否;我的意思是在适配器和您的出站组件之间 的流中没有QueueChannelExecutorChannels。这些通道将工作移交给另一个线程。只要您使用默认通道(并且不向发布-订阅通道添加执行程序),两条腿都将在同一个线程上运行以完成。只有这样,才会处理下一条消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多