JMS可以配置为允许一条消息仅由一个接收器接收/处理吗?

时间:2014-12-08 17:36:33

标签: spring transactions jms activemq spring-jms

我不确定这个问题是与同步有关还是更像是事务管理,但我目前的目标是像Spring这样实现一个模块:

  1. 一个发送消息到队列的发件人
  2. 从队列接收消息的多个接收器。
  3. 每个接收者从消息中提取信息并放入数据持久性(数据库)
  4. ***最重要的要求是一个接收者一次只能接收一个消息,这样就不会导致数据库事务问题(如乐观锁定问题)。如果所有接收者都开始处理相同的消息,那么它将导致数据库事务管理出现问题。
  5. 密钥是确保阻止多个接收者接收消息,这就是全部。

    我已经完成1,2,3但是混淆了4,我发现this线程有帮助,但我不确定它能解决上面的情况,同时我也想知道如果没有来自Spring的JTA事务管理,标准JMS或JMS提供程序(ActiveMQ,Websphere MQ,JBoss HonetQ等)是否可以提供任何配置,以确保只能接收一个消息或仅由一个接收方处理?

2 个答案:

答案 0 :(得分:1)

这就是JMS的工作方式。只要您使用队列而不是主题,只有一个消费者会收到每条消息。

答案 1 :(得分:1)

阅读this。正如Gary已经提到的,队列中的消息总是由单个消费者接收而不管号码订户。有/无交易都是如此。