public String send(LogEntry log) {
try {
// QueueSender queuesender = queueSession.createSender(queue); QueueRequestor queueRequestor = new QueueRequestor(queueSession, queue); queueConnection.start();
ObjectMessage ob = queueSession.createObjectMessage(log);
// TextMessage txs = queueSession.createTextMessage();
// txs.setText("I'am zhuyefeng !it's true");
TextMessage reply = (TextMessage) queueRequestor.request(ob);
String replys = reply.getText();
return replys; }
catch (JMSException e)
{ // TODO Auto-generated catch block
e.printStackTrace();
return null; }finally{ destroy(); } }
public void destroy() {
try {
queueConnection.close();
queueSession.close(); }
catch (JMSException e)
{ // TODO Auto-generated catch block
e.printStackTrace(); } }
@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/myQueue") }) @TransactionManagement(TransactionManagementType.BEAN)
public class ReplyMDB implements MessageListener { public void onMessage(Message msg) {
InitialContext context;
QueueConnectionFactory queueConnectionFactory;
QueueConnection queueConnection = null; QueueSession queueSession = null; Queue queue = null;
QueueSender queuesender = null ; TextMessage tm = null ;
try { context = new InitialContext();
queueConnectionFactory = (QueueConnectionFactory) context .lookup("ConnectionFactory");
queue = (Queue) context.lookup("queue/myQueue");
queueConnection = queueConnectionFactory.createQueueConnection(); queueConnection.start();
queueSession = queueConnection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
tm = queueSession.createTextMessage(); tm.setJMSReplyTo(queue);
// queueReceiver = queueSession.createReceiver(queue);
ObjectMessage om = (ObjectMessage) msg;
LogEntry lg = (LogEntry) om.getObject();
queuesender = queueSession.createSender((Queue)om.getJMSReplyTo()); tm.setText("OK"); queuesender.send(tm); }
catch (JMSException e) {
e.printStackTrace();
try { tm.setText("NG"); queuesender.send(tm); }
catch (JMSException e1) { e1.printStackTrace(); } }
catch (NamingException e) { e.printStackTrace(); }
finally{ try { queueConnection.close(); queueSession.close(); }
catch (JMSException e) { e.printStackTrace(); } } }
不使用MDB时 ,产生javax.jms.InvalidDestinationException :This destination does not exist!异常,原因调查中!
分享到:
相关推荐
camel-requestreply-with-jms -> 使用 JMS 在骆驼队列中实现请求/回复模式。 在路线中使用榛子广播缓存。 camel-requestreply-without-jms -> 使用 seda 队列实现请求/回复。 在路线中使用榛子广播缓存。 camel-...
- **交互模式:** 描述了JMS支持的请求/回复(Request/Reply)消息交互模式,这是一种常见的通信模式,允许客户端发送请求并等待响应。 综上所述,JMS规范1.1(中文版)详细阐述了Java消息服务的核心概念、架构设计...
确保在ActiveMQ和Confluent中都创建了队列(合流中的主题) reply-queue , request-queue和invalid-queue 在一个终端中, cd confluentjms-replier和mvn clean package 在第二个终端cd confluentjms-requestor和...
SOAP Input节点、Endpoint Lookup节点、SOAP Request节点和SOAP Reply节点 - C. SQAP Input节点、Endpoint Lookup节点、SOAP Request节点和SOAP Reply节点 - D. HTTP Input节点、Database Retrieve节点、...
此外,还需要考虑交易特性,如两阶段提交、消息顺序保证和适配器需求,以及消息通信模式(Send and Forget、Request/Reply或Pub/Sub)。 非功能性需求方面,需关注ESB平台的扩展性、高可用性(HA和集群)、性能...
2. **消息模式**:ActiveMQ支持多种消息模式,如点对点(Queue)、发布/订阅(Topic)、请求/响应(Request/Reply)等,以满足不同应用场景的需求。 3. **高级路由和过滤**:ActiveMQ提供了多种消息路由策略,如...
2. **Broker**: 提供了基于JMS的消息中间件功能,支持请求/响应(request/reply)和发布/订阅(pub/sub)两种通信模式。 3. **Developer & Adapters**: 提供了一系列开发工具和预构建的适配器,用于快速集成各种不同类型...
3. **请求/响应模式(Request/Reply)**:发送者发送一个请求消息到队列,接收者处理请求后,将响应消息发送回另一个队列。这种方式常用于服务调用或远程过程调用。 4. **事务消息模式(Transacted Messaging)**:...
4. **消息模式**:ActiveMQ支持多种消息模式,如点对点(Queue)、发布/订阅(Topic)、请求/响应(Request/Reply)等。这些模式适应了不同场景下的通信需求,如可靠的单次传递、广播或者分布式计算。 5. **高级...
实例119 Request-Reply模式的JMS应用 421 实例120 使用Java IDL 426 实例121 EJB与CORBA的交互 430 实例122 基于EJB的真实世界模型 433 实例123 EJB的商业应用——定购单 447 第11章 Java 2 Platform Micro Edition...
Reply模式的JMS应用 421 实例120 使用Java IDL 426 实例121 EJB与CORBA的交互 430 实例122 基于EJB的真实世界模型 433 实例123 EJB的商业应用——定购单 447 第11章 Java 2 Platform Micro Edition...