2

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

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

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

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

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

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

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

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

我的问题是:

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

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

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

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

谢谢。

4

2 回答 2

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?

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

于 2013-07-29T07:58:10.537 回答
0
  1. JMSReplyTo 只是一个消息头,没有别的。因此,可以在此标头中发布具有特定值的主题的消息。

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

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

于 2013-07-29T08:09:35.353 回答