Java 消息队列侦听器和RESTful集成
我的项目发布RESTful/SOAP服务。其中一个将消息发送到WebSphereApplicationServer上的JMS队列。应用程序在同一个应用程序服务器上运行。我需要的是为这个队列定义一个侦听器。没有服务的直接呼叫,如何激活此侦听器 项目结构如下所示:Java 消息队列侦听器和RESTful集成,java,rest,jakarta-ee,java-ee-6,websphere-8,Java,Rest,Jakarta Ee,Java Ee 6,Websphere 8,我的项目发布RESTful/SOAP服务。其中一个将消息发送到WebSphereApplicationServer上的JMS队列。应用程序在同一个应用程序服务器上运行。我需要的是为这个队列定义一个侦听器。没有服务的直接呼叫,如何激活此侦听器 项目结构如下所示: Project: -ejb -rest -soap 用户调用服务上的方法,服务调用EJB组件,因此我没有任何可以初始化侦听器的主方法 我需要一个解决方案来激活队列的永久侦听器 我已经有了源代码,但我不知道如何初始化侦听器。不
Project:
-ejb
-rest
-soap
用户调用服务上的方法,服务调用EJB组件,因此我没有任何可以初始化侦听器的主方法
我需要一个解决方案来激活队列的永久侦听器
我已经有了源代码,但我不知道如何初始化侦听器。不确定您的问题出在哪里: 做一些类似于:
- 在WebSphere中定义JMS资源
- 将javax.jms.Queue作为资源注入EJB(或者使用CDI?不确定CDI是否支持此功能)
- 使用此队列发送消息
- 定义MDB(@MessageDriven)以侦听消息
@MessageDriven(activationConfig={
@ActivationConfigProperty(propertyName="destination", propertyValue="myDestination"),
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue")
})
public class MsgBean implements javax.jms.MessageListener {
public void onMessage(javax.jms.Message msg) {
String receivedMsg = ((TextMessage) msg).getText();
System.out.println("Received message: " + receivedMsg);
}
}
您使用的JMS队列是什么?它是如何在Websphere上配置的?您的项目是如何配置的?有了Spring,CDI,其他的?没关系。。。所有功能都工作得很好。导入是在我的ejb中定义一个区域,其中init由startupHint定义:ejb可能不负责启动侦听器。应该在应用程序上下文中的某个位置将其配置为独立组件.Thx。我的第一次尝试是使用ejb注释,如@Startup和Postconst。。。。并使用while(1)在那里调用我的Recv方法。但是WebSphere不受这种方式的支持。它必须与MDB一起使用。。。