【前言】
在 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)"中,我们将探索如何使用ActiveMQ进行基本的消息发布与订阅。 在消息中间件中,"Hello World"程序通常用于演示最基本的消息传递概念。ActiveMQ的"Hello World"程序主要...
在本文中,我们将深入探讨如何使用ActiveMQ创建一个基本的"HelloWorld"实例,以便于初学者理解消息队列的工作原理。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了多种消息协议,如OpenWire、AMQP、...
这个程序创建了一个连接,创建了一个队列目的地,并发送了一条"Hello World!"的消息到名为 "jms_test_queue" 的队列。 总结来说,安装和运行ActiveMQ涉及下载、解压、设置权限、启动和验证服务状态。通过编写简单的...
client.publish('test/topic', 'Hello, MQTT World!'); }); // 接收消息事件 client.on('message', function (topic, message) { console.log(`Received message from topic ${topic}: ${message.toString()}`); ...
ActiveMQ_HelloWorld 是一个示例项目,它展示了如何使用 Apache ActiveMQ 这个开源消息代理来实现消息队列(MQ)的基本功能。在这个项目中,我们重点探讨了两种主要的消息传递模式:点对点(Point-to-Point, PTP)和...
std::auto_ptr<cms::TextMessage> message(session->createTextMessage("Hello, World!")); producer->send(message.release()); std::auto_ptr<cms::Message> received = consumer->receive(); ``` 5. **构建...
Hello, World! ``` 4. **接收消息** 接收消息可以通过GET请求实现,但请注意,这通常会导致消息被删除。请求格式如下: ``` GET /api/message/{destination}?count={messageCount} ``` 其中`{messageCount}`...
解压缩apache-activemq-5.5.1-bin.zip,然后双击...包含了apache-activemq-5.5.1-bin.zip以及ActiveMQ一个helloworld的demo启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。
Message message = session.createTextMessage("Hello World!"); // 发送消息 producer.send(message); // 关闭会话和连接 session.close(); connection.close(); } } ``` 接收端(QueueReceiver): ```...
在`activeMQ_HelloWorld`示例中,我们通常会看到以下关键部分: 1. **配置ActiveMQ**:设置ActiveMQ服务器,这可能包括下载和启动ActiveMQ实例,以及配置相关的连接参数(如URL、端口等)。 2. **添加依赖**:在...
的基础知识,并且讲解了一个HelloWorld级别的例子帮助理解。这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTP andPub/Sub)、与Spring整合、...
TextMessage message = session.createTextMessage("Hello, World!"); producer.send(message); ``` ##### 目的地(Destination) 目的地用于指定消息的发送目标或接收源。根据消息传递模型的不同,JMS规范定义了...
TextMessage message = session.createTextMessage("Hello, World!"); producer.send(message); ``` 4. **重新连接和接收消息**:消费者在重新连接到ActiveMQ后,会自动恢复其持久订阅,并开始接收自断开连接...
Message message = session.createTextMessage("Hello World!"); producer.send(message); session.close(); connection.close(); } } ``` - **接收端代码示例**:同样通过`ActiveMQConnectionFactory`创建...
例如,你可以发送一个简单的字符串,如“Hello, World!”。在Spring JMS中,使用`JmsTemplate.convertAndSend()`方法可以发送TextMessage,而`MessageListener`接口的`onMessage(Message msg)`方法则用于接收。 2. ...
helloworld阶段 : 一个发送消息的程序,一个接收消息的程序..实现最简单的JMS交流... 监听器阶段 : ⑴MessageListener,最简单的监听器..只是拿来监听接收信息的 ⑵SessionAwareMessageListener,有个session的参数...
string text = (string) "Hello world! from thread " + threadIdStr; for (int ix = 0; ix ; ++ix) { std::auto_ptr<TextMessage> message(session->createTextMessage(text)); message->setIntProperty(...