2013-07-29 64 views
2

我对JMS比较陌生,最近我一直在阅读它。JMS设计:主题和队列组合

我打算设计一个Web应用程序这将做到以下几点:

  1. 用户登录到系统,并发布消息/问题的话题。

  2. 订阅该主题的所有用户都会阅读该邮件/问题并进行回复。

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

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

  5. 响应者获取消息并回复。

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

我的问题是:

  1. 是否可以发布到一个话题setJmsReplyTo(tempQueue)?

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

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

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

谢谢。

回答

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? 

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

+0

谢谢。我有点倾向于设计和发布带有消息头集的主题。你的回答帮助我做出决定。 –

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

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

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