JMS设计:主题和队列组合

时间:2013-07-29 07:21:58

标签: jms

我对JMS比较陌生,最近我一直在阅读它。

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

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

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

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

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

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

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

    我的问题是:

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

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

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

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

      感谢。

2 个答案:

答案 0 :(得分:1)

Is it possible to publish to a topic with setJmsReplyTo(tempQueue)?

你应该可以,但我不是百分之百确定。顺便说一下,我搜索了我的书签,发现这个链接应该解释你要使用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?

我不知道您希望拥有多少用户,但每个用户拥有一个队列并不是处理邮件的好方法。我有一个类似于你的问题,但我们为每个宏区域使用了一个队列,我们​​构建了消息来保存发送它的用户的信息,以便稍后存储信息并用它来进一步分析。

答案 1 :(得分:0)

  1. JMSReplyTo只是一个消息头,没有别的。因此,可以在此标题中发布包含具有特定值的主题的消息。

  2. 当然!如果您想创建一个可扩展的系统,您应该使用async而不是阻止aproach来设计事件驱动的系统。 MessageListener可以帮助您。

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