`
longgangbai
  • 浏览: 7340064 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ActiveMQ异步发送JMS消息

阅读更多

 在下载activeMq-all-5.2.jar.开发;

本实例来自apache 的官方网站:

package cn.com.vnvtrip.apachemq;

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 此代码来自官方网站: 自己添加注释:
 *  总结:使用JMS的步骤:
 *  (1)创建一個JMS连接工厂
 *  (2)创建 一個JMS连接并启动连接
 * (3)创建一個JMS的会话并建立相应的JMS目标對象 (队列)
 * (4)通过相应的消息创建者创建消息和消息消费者接受消息。
 *
 * Hello world!
 */
public class App {

 public static void main(String[] args) throws Exception {
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  Thread.sleep(1000);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  Thread.sleep(1000);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldProducer(), false);
  Thread.sleep(1000);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldConsumer(), false);
  thread(new HelloWorldProducer(), false);
 }

 public static void thread(Runnable runnable, boolean daemon) {
  Thread brokerThread = new Thread(runnable);
  brokerThread.setDaemon(daemon);
  brokerThread.start();
 }

 /**
  * 消息的创建者的应用
  *
  * @author longgangbai
  *
  */
 public static class HelloWorldProducer implements Runnable {
  public void run() {
   try {
    // 创建一個ActionMQ的连接工厂
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
      "vm://localhost");

    // 创建一個ActionMQ连接工厂
    Connection connection = connectionFactory.createConnection();
    connection.start();

    // 创建一個ActionMQ会话
    Session session = connection.createSession(false,
      Session.AUTO_ACKNOWLEDGE);

    // 创建一個连接ActionMQ的目标(Topic or Queue)
    Destination destination = session.createQueue("TEST.FOO");

    // 创建一個消息的创建者从会话中队列目标中
    MessageProducer producer = session.createProducer(destination);
    producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    // 创建一個消息
    String text = "Hello world! From: "
      + Thread.currentThread().getName() + " : "
      + this.hashCode();
    TextMessage message = session.createTextMessage(text);

    // 发送一個消息
    System.out.println("Sent message: " + message.hashCode()
      + " : " + Thread.currentThread().getName());
    producer.send(message);
    // 关闭会话和连接
    session.close();
    connection.close();
   } catch (Exception e) {
    System.out.println("Caught: " + e);
    e.printStackTrace();
   }
  }
 }

 /**
  * 消息的消费者
  *
  * @author longgangbai
  *
  */
 public static class HelloWorldConsumer implements Runnable,
   ExceptionListener {
  public void run() {
   try {

    // 创建一個JMS的连接工厂的
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
      "vm://localhost");

    // 创建一個JMS的连接
    Connection connection = connectionFactory.createConnection();
    // 启动连接對象
    connection.start();

    connection.setExceptionListener(this);

    // 创建会话
    Session session = connection.createSession(false,
      Session.AUTO_ACKNOWLEDGE);

    // 创建目标的對象 Create the destination (Topic or Queue)
    Destination destination = session.createQueue("TEST.FOO");

    // 创建消息的消费者的 Create a MessageConsumer from the Session to the
    // Topic or
    // Queue
    MessageConsumer consumer = session.createConsumer(destination);

    // 接受相应的消息對應 Wait for a message
    Message message = consumer.receive(1000);

    if (message instanceof TextMessage) {
     TextMessage textMessage = (TextMessage) message;
     String text = textMessage.getText();
     System.out.println("Received: " + text);
    } else {
     System.out.println("Received: " + message);
    }
    // 关闭会话和连接
    consumer.close();
    session.close();
    connection.close();
   } catch (Exception e) {
    System.out.println("Caught: " + e);
    e.printStackTrace();
   }
  }

  /*
   * 异步消息异常处理 (non-Javadoc)
   *
   * @see javax.jms.ExceptionListener#onException(javax.jms.JMSException)
   */
  public synchronized void onException(JMSException ex) {
   System.out.println("JMS Exception occured.  Shutting down client.");
  }
 }
}

分享到:
评论

相关推荐

    test_jms.zip_activemq_activemq案例_jms_jms test

    ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了JMS规范,允许分布式系统中的组件之间进行异步通信。JMS是一个为Java平台设计的消息传递标准,它提供了一种标准接口,使得应用程序可以发送和接收消息,...

    ActiveMq+SpringMVC实现邮件异步发送

    同时,还需要编写一个邮件服务类,该类使用JMS模板发送消息到队列。而在消费者端,需要监听这个队列,接收到消息后执行实际的邮件发送操作,如使用JavaMail API发送邮件。 总的来说,这个项目提供了一种实用的方法...

    activeMQ发送消息返回消息

    通过以上讲解,我们可以看出,ActiveMQ的发送消息并接收返回信息涉及到JMS规范的多个层面,包括连接管理、会话创建、消息生产和消费,以及消息确认机制。理解并掌握这些知识点对于构建健壮、高效的分布式系统至关...

    activemq中间件视频 jms规范

    通过这个视频系列,你不仅能够掌握ActiveMQ的基本操作,还能深入理解JMS规范,从而在实际项目中更有效地利用消息中间件进行解耦和异步通信。此外,了解ActiveMQ的性能调优和故障排查技巧也是提升系统稳定性的关键,...

    JMS之Spring +activeMQ实现消息队列

    "JMS之Spring + ActiveMQ实现消息队列"涉及到的关键知识点包括:Spring框架的JMS支持、ActiveMQ的使用、ConnectionFactory的配置、JmsTemplate和MessageListener的实现,以及消息队列在解决系统解耦和异步处理中的...

    ActiveMQ在JMS中的运用-深入浅出JMS

    4. **消息生产者(Message Producer)**:负责创建和发送消息到队列或主题的组件。 5. **消息消费者(Message Consumer)**:从队列或主题接收并处理消息的组件。 6. **消息代理(Message Broker)**:如ActiveMQ...

    Spring整合Blazeds实现ActiveMQ JMS消息服务

    3. **创建消息服务**:在Java后端,你可以使用Spring的`JmsTemplate`来发送消息。同时,你也可以定义一个监听器类,通过实现`MessageListener`接口来接收消息。 4. **Flex客户端**:在Flex客户端,使用Blazeds提供...

    JMS.rar_activemq_jms_jms activemq

    总的来说,本示例旨在演示如何利用ActiveMQ作为JMS实现,通过编写Java代码发送消息。理解JMS和ActiveMQ的工作原理及其API的使用,对于构建高效、可靠的分布式应用程序至关重要。通过实践和探索"JMS.txt"中的代码,你...

    activeMQ-JMS实例

    ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了JMS规范,允许应用程序之间进行异步通信。JMS是一种标准接口,用于Java平台上的消息传递,提供了可靠的消息传递机制,确保消息的顺序和持久性,同时也...

    Spring JMS异步发收消息 ActiveMQ

    JMS(使用消息中介:ActiveMQ) JMS为JAVA开发者提供了一个与消息中介进行交互,以及发送和接收消息的标准API,而且每一个消息中介的实现都会支持JMS。(即JMS为所有消息中介提供了统一接口);JmsTemplate是Spring...

    ActiveMQ-jms jar包

    2. **MessageProducer**: 这个接口用于创建和发送消息到目的地。开发者可以通过调用其`createTextMessage()`或`createObjectMessage()`方法创建不同类型的消息。 3. **MessageConsumer**: 它用于接收从目的地发送来...

    JMS 使用 ActiveMQ 传送文件

    2. **JMS 使用 ActiveMQ 传送文件.doc** - 这个文档应该直接涵盖了如何使用ActiveMQ进行文件传输的具体步骤,可能包括了创建消息、设置目的地、发送和接收文件的代码示例,以及如何处理错误和异常的情况。...

    Springboot整合ActiveMQ,实现消息的发送接收功能源码

    创建一个Spring Boot的Bean,该Bean使用`JmsTemplate`来发送消息到指定的ActiveMQ主题或队列: ```java @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String message, String ...

    activeMq in action 使用activeMq开发JMS的简单讲述

    4. **创建和发送消息**:在会话上创建生产者,选择合适的目标(队列或主题),然后发送消息。 5. **接收消息**:对于点对点模型,创建消费者并监听队列;对于发布/订阅模型,创建订阅者并订阅主题。接收到消息后,...

    结合Spring2.0和ActiveMQ进行异步消息调用

    Spring的`JmsTemplate`可以用来方便地发送消息到指定的队列或主题。例如: ```java @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String message) { jmsTemplate.convertAndSend(...

    ActiveMQ与Spring整合之异步发送邮件

    2. **异步处理**:通过集成ActiveMQ,可以创建一个消息生产者,将发送邮件的任务作为一个消息放入队列,由后台消费者处理。这样,主流程不会被邮件发送阻塞,提高了系统的响应速度。 3. **消费者端**:在消费者端,...

    activeMQ消息发送过程与原理浅析

    【描述】:本文旨在解析activeMQ消息中间件在发送消息过程中的工作原理,包括同步发送和异步发送两种方式。activeMQ的消息发送涉及到客户端与broker之间的交互,对于消息的可靠性和性能有着直接影响。 【标签】:...

    activeMQ-jms

    Apache ActiveMQ是业界广泛使用的一款开源消息中间件,它基于Java Message Service (JMS) 规范,提供了高效、可靠的异步通信能力。在“activeMQ-jms”这个压缩包中,我们通常会找到Apache ActiveMQ 5.13.4版本的相关...

    ActiveMq-JMS简单实例

    例如,使用`javax.jms.ConnectionFactory`创建连接,`javax.jms.Queue`或`javax.jms.Topic`定义目的地,`javax.jms.MessageProducer`发送消息,`javax.jms.MessageConsumer`接收消息。消息可以是TextMessage、...

    springboot集成activemq实现消息接收demo

    现在,我们可以启动Spring Boot应用,并通过`MessageSender.sendMessage()`方法发送消息。`MessageReceiver`会自动监听并接收这些消息。 在实际开发中,你可以根据需求调整`MessageReceiver`的处理逻辑,例如添加...

Global site tag (gtag.js) - Google Analytics