`
109735215
  • 浏览: 33155 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【Hello world】(一)========ActiveMQ

 
阅读更多
【前言】

在 Java 里有 JMS 的多个实现。其中 apache 下的 ActiveMQ 就是不错的选择。还有一个比较热的是 RabbitMQ (是 erlang 语言实现的)。这里示例下使用 ActiveMQ.

JMS

用 ActiveMQ 最好还是了解下 JMS

JMS 公共 点对点域 发布/订阅域
ConnectionFactory QueueConnectionFactory TopicConnectionFactory
Connection QueueConnection TopicConnection
Destination Queue Topic
Session QueueSession TopicSession
MessageProducer QueueSender TopicPublisher
MessageConsumer QueueReceiver TopicSubscriber

JMS 定义了两种方式:Quere(点对点);Topic(发布/订阅)。

ConnectionFactory 是连接工厂,负责创建Connection。

Connection 负责创建 Session。

Session 创建 MessageProducer(用来发消息) 和 MessageConsumer(用来接收消息)。

Destination 是消息的目的地。

apache-activemq-5.3.0。http://activemq.apache.org/download.html,解压,然后双击 bin/activemq.bat。运行后,可以在http://localhost:8161/admin观察。也有 demo,http://localhost:8161/demo

把 activemq-all-5.3.0.jar 加入 classpath

发送消息的代码:

package com.mq.send;
import java.util.Date;

import org.apache.activemq.ActiveMQConnection; 
import org.apache.activemq.ActiveMQConnectionFactory; 

import javax.jms.*; 


public class SendTest {
	public static void main(String[] args) throws JMSException {
		// ConnectionFactory :连接工厂,JMS 用它创建连接 
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( 
                        ActiveMQConnection.DEFAULT_USER, 
                        ActiveMQConnection.DEFAULT_PASSWORD, 
                        "tcp://localhost:61616"); 
        //JMS 客户端到JMS Provider 的连接 
        Connection connection = connectionFactory.createConnection(); 
        connection.start(); 
        // Session: 一个发送或接收消息的线程 
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 
        // Destination :消息的目的地;消息发送给谁. 
        // 获取session注意参数值my-queue是Query的名字 
        Destination destination = session.createQueue("my-queue"); 
        // MessageProducer:消息生产者 
        MessageProducer producer = session.createProducer(destination); 
        //设置不持久化 
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 
        //发送一条消息 
        for (int i = 0; i < 1000; i++) {
			
        	sendMsg(session, producer); 
		}
        session.commit(); 
        connection.close(); 
	}
	
	 public static void sendMsg(Session session, MessageProducer producer) throws JMSException { 
         //创建一条文本消息 
         TextMessage message = session.createTextMessage("Hello ActiveMQ!"+new Date().getTime()); 
         System.out.println("Hello ActiveMQ!"+new Date().getTime());
         //通过消息生产者发出消息 
         producer.send(message); 
        
 } 
}
接受消息:

package com.mq.send;

import org.apache.activemq.ActiveMQConnection; 
import org.apache.activemq.ActiveMQConnectionFactory; 

import javax.jms.*; 

/** 
* 消息的消费者(接受者) 
* 
* @author leizhimin 2009-8-12 11:41:33 
*/ 
public class JmsReceiver { 
        public static void main(String[] args) throws JMSException { 
                // ConnectionFactory :连接工厂,JMS 用它创建连接 
                ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( 
                                ActiveMQConnection.DEFAULT_USER, 
                                ActiveMQConnection.DEFAULT_PASSWORD, 
                                "tcp://localhost:61616"); 
                //JMS 客户端到JMS Provider 的连接 
                Connection connection = connectionFactory.createConnection(); 
                connection.start(); 
                // Session: 一个发送或接收消息的线程 
                Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 
                // Destination :消息的目的地;消息发送给谁. 
                // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置 
                Destination destination = session.createQueue("my-queue"); 
                // 消费者,消息接收者 
                MessageConsumer consumer = session.createConsumer(destination); 
                while (true) { 
                        TextMessage message = (TextMessage) consumer.receive(1000); 
                        if (null != message) 
                                System.out.println("收到消息:" + message.getText()); 
                        else 
                                break; 
                } 
                session.close(); 
                connection.close(); 
        } 
}



分享到:
评论

相关推荐

    apache activeMQ之初体验(helloworld)

    在这个"apache activeMQ之初体验(helloworld)"中,我们将探索如何使用ActiveMQ进行基本的消息发布与订阅。 在消息中间件中,"Hello World"程序通常用于演示最基本的消息传递概念。ActiveMQ的"Hello World"程序主要...

    ActiveMQ简单的HelloWorld实例

    在本文中,我们将深入探讨如何使用ActiveMQ创建一个基本的"HelloWorld"实例,以便于初学者理解消息队列的工作原理。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了多种消息协议,如OpenWire、AMQP、...

    ActiveMQ 安装 手册 说明

    这个程序创建了一个连接,创建了一个队列目的地,并发送了一条"Hello World!"的消息到名为 "jms_test_queue" 的队列。 总结来说,安装和运行ActiveMQ涉及下载、解压、设置权限、启动和验证服务状态。通过编写简单的...

    mqttjs(activemq测试工具)

    client.publish('test/topic', 'Hello, MQTT World!'); }); // 接收消息事件 client.on('message', function (topic, message) { console.log(`Received message from topic ${topic}: ${message.toString()}`); ...

    ActiveMQ_Helloword

    ActiveMQ_HelloWorld 是一个示例项目,它展示了如何使用 Apache ActiveMQ 这个开源消息代理来实现消息队列(MQ)的基本功能。在这个项目中,我们重点探讨了两种主要的消息传递模式:点对点(Point-to-Point, PTP)和...

    activemq-cpp-library-3.9.5-src.zip

    std::auto_ptr&lt;cms::TextMessage&gt; message(session-&gt;createTextMessage("Hello, World!")); producer-&gt;send(message.release()); std::auto_ptr&lt;cms::Message&gt; received = consumer-&gt;receive(); ``` 5. **构建...

    ActiveMQ与REST API实践

    Hello, World! ``` 4. **接收消息** 接收消息可以通过GET请求实现,但请注意,这通常会导致消息被删除。请求格式如下: ``` GET /api/message/{destination}?count={messageCount} ``` 其中`{messageCount}`...

    apache-activemq-5.5.1-bin.zip加上入门demo

    解压缩apache-activemq-5.5.1-bin.zip,然后双击...包含了apache-activemq-5.5.1-bin.zip以及ActiveMQ一个helloworld的demo启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。

    ActiveMQ学习

    Message message = session.createTextMessage("Hello World!"); // 发送消息 producer.send(message); // 关闭会话和连接 session.close(); connection.close(); } } ``` 接收端(QueueReceiver): ```...

    activeMQ消息队列的简单示例代码

    在`activeMQ_HelloWorld`示例中,我们通常会看到以下关键部分: 1. **配置ActiveMQ**:设置ActiveMQ服务器,这可能包括下载和启动ActiveMQ实例,以及配置相关的连接参数(如URL、端口等)。 2. **添加依赖**:在...

    ActiveMQ从入门到精通(一)

    的基础知识,并且讲解了一个HelloWorld级别的例子帮助理解。这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTP andPub/Sub)、与Spring整合、...

    ActiveMQ in Action

    TextMessage message = session.createTextMessage("Hello, World!"); producer.send(message); ``` ##### 目的地(Destination) 目的地用于指定消息的发送目标或接收源。根据消息传递模型的不同,JMS规范定义了...

    如何实现ActiveMq的Topic的持久订阅

    TextMessage message = session.createTextMessage("Hello, World!"); producer.send(message); ``` 4. **重新连接和接收消息**:消费者在重新连接到ActiveMQ后,会自动恢复其持久订阅,并开始接收自断开连接...

    active mq 学习笔记

    Message message = session.createTextMessage("Hello World!"); producer.send(message); session.close(); connection.close(); } } ``` - **接收端代码示例**:同样通过`ActiveMQConnectionFactory`创建...

    ActiveMQ常见消息类型.docx

    例如,你可以发送一个简单的字符串,如“Hello, World!”。在Spring JMS中,使用`JmsTemplate.convertAndSend()`方法可以发送TextMessage,而`MessageListener`接口的`onMessage(Message msg)`方法则用于接收。 2. ...

    JMS入门Demo

    helloworld阶段 : 一个发送消息的程序,一个接收消息的程序..实现最简单的JMS交流... 监听器阶段 : ⑴MessageListener,最简单的监听器..只是拿来监听接收信息的 ⑵SessionAwareMessageListener,有个session的参数...

    testActiveMQ.rar

    string text = (string) "Hello world! from thread " + threadIdStr; for (int ix = 0; ix ; ++ix) { std::auto_ptr&lt;TextMessage&gt; message(session-&gt;createTextMessage(text)); message-&gt;setIntProperty(...

Global site tag (gtag.js) - Google Analytics