【问题标题】:JMS design: topic and queue combinationJMS设计:主题与队列的结合
【发布时间】:2013-07-29 16:09:35
【问题描述】:

我对 JMS 比较陌生,最近阅读了很多关于它的内容。

我打算设计一个网络应用程序,它将执行以下操作:

  1. 用户登录系统并向主题发布消息/问题。

  2. 已订阅该主题的所有用户阅读消息/问题并回复。

  3. 发起人审核所有答案并选择最佳答案。

  4. 发起者现在只回复他/她选择了答案的用户,并要求进一步澄清。

  5. 响应者收到消息并回复。

因此,一旦发起者选择了答案,JMS 现在就变成了请求/回复设计。

我的问题是:

  1. 是否可以使用 setJmsReplyTo(tempQueue) 发布到主题?

  2. 请求/回复方法可以异步吗?

  3. 每个用户队列是个好主意吗?

这些问题对这里的一些专家来说可能有些愚蠢,但请记住我仍在学习。

谢谢。

【问题讨论】:

    标签: jms


    【解决方案1】:
    Is it possible to publish to a topic with setJmsReplyTo(tempQueue)?
    

    你应该可以,但我不能 100% 确定。顺便说一句,我在我的书签中搜索并找到了这个链接,该链接应该解释如何使用 JMS 构建请求/响应系统

    http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html

    Can request/reply approach be async?
    

    消息侦听器是充当消息的异步事件处理程序的对象。所以你处理请求/回复,如果使用 JMS,默认是异步的。

    http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/prog_model.html#1023398

    Is it a good idea to have per user queue?
    

    我不知道您希望有多少用户,但为每个用户设置一个队列并不是处理消息的好方法。我遇到了与您类似的问题,但我们为每个宏区域使用了一个队列,并且我们构造了消息以保存发送它的用户的信息,以便以后存储信息并使用它进行进一步分析。

    【讨论】:

    • 谢谢。我有点倾向于在带有消息头集的主题上发布设计。您的回答帮助我做出了决定。
    【解决方案2】:
    1. JMSReplyTo 只是一个消息头,没有别的。因此,可以在此标头中发布具有特定值的主题的消息。

    2. 当然!如果您想创建一个可扩展的系统,您应该使用异步而不是阻塞方法来设计事件驱动系统。 MessageListener 可以为您提供帮助。

    3. 它特定于 JMS 代理实现。如果队列创建非常便宜,那么这种解决方案没有问题。

    【讨论】:

      猜你喜欢
      • 2011-07-31
      • 2018-03-30
      • 2013-06-30
      • 2012-12-15
      • 2012-11-14
      • 2012-02-22
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多