使用Wildfly 10.1.0.Final和定製的JMS消息隊列,我可以通過in-vm InVmConnectionFactory
成功發送和接收消息,JNDI名稱爲java:/ConnectionFactory
。無法通過Wildfly中默認的Artemis/ActiveMQ向本地JMS隊列發送消息10
但是,我不能得到新的pooled-connection-factory
使用JNDI名稱java:/JmsXA
工作,消息只是迷路,不要在任何地方顯示出來(也檢查了wildfly控制檯的運行時JMS服務器視圖(Runtime->Subsystems->Messaging - ActiveMQ
)。
因爲active-mq
池連接工廠被標記爲DefaultJMSConnectionFactory
,使用JMS 2.0 API和簡單地通過注入JMSContext
@Inject
JmsContext jmsContext;
消息發送將不起作用開箱。
這很奇怪,我發現最近使用包含Artemis(ActiveMQ)代理的wildfly 10配置沒有類似的問題。
連接工廠被定義爲事務默認情況下,但是這是矯枉過正我們的場景,所以我切換它關閉:
<pooled-connection-factory name="activemq-ra" entries="java:/JmsXA" connectors="in-vm" transaction="none"/>
我檢查覆蓋JMS 1.1 /的Wildfly messaging configuration guide和各種網上的例子2.0,但到目前爲止還沒有發現線索。
樣品的編號:
@Startup // just for a simple test sending a message right on startup
public class MessageService {
@Inject
@JMSConnectionFactory("java:/JmsXA") // activemq-ra pooled-connection-factory
private JMSContext jmsContext;
@Resource(lookup = JAVA_JMS_PROGRESS_QUEUE)
private Queue progressQueue;
public MessageService() {
}
@PostConstruct
private void init() {
final JMSProducer jmsProducer = jmsContext.createProducer();
jmsProducer.send(progressQueue, "Hello queue"));
}
}