实际上,JBoss确实发送了消息,但仅在EJB启动的当前事务完成时发送。
我们在JBoss 4.0.3和Spring的JmsTemplate中遇到了这个问题。一个EJB向一个队列发送一条消息,其中包含一个临时队列作为回复字段。然后,在同一个事务内,我们监听第一个MDB给出的响应。问题是JmsTemplate的"send"方法在事务结束后才执行。因此,当消息被发送到队列并由MDB处理时,临时队列的侦听器已经消失了。
这称为"同步接收"。
两件事改变了这种行为,但引起了一些关注:
1.将EJB的事务类型更改为BMT。(关注:BMT很糟糕) 2.创建一个线程,它所做的就是调用JmsTemplate.send()方法。
顺便说一下,这是一个在weblogic环境下正常工作的EJB,并且消息在应该发送的时间发送,即在事务进行中而不是事务结束时。
感谢任何帮助。
我们在JBoss 4.0.3和Spring的JmsTemplate中遇到了这个问题。一个EJB向一个队列发送一条消息,其中包含一个临时队列作为回复字段。然后,在同一个事务内,我们监听第一个MDB给出的响应。问题是JmsTemplate的"send"方法在事务结束后才执行。因此,当消息被发送到队列并由MDB处理时,临时队列的侦听器已经消失了。
这称为"同步接收"。
两件事改变了这种行为,但引起了一些关注:
1.将EJB的事务类型更改为BMT。(关注:BMT很糟糕) 2.创建一个线程,它所做的就是调用JmsTemplate.send()方法。
顺便说一下,这是一个在weblogic环境下正常工作的EJB,并且消息在应该发送的时间发送,即在事务进行中而不是事务结束时。
感谢任何帮助。