【前言】
在 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();
}
}
分享到:
相关推荐
activeMQ之hello world小程序
我们使用ActiveMQ为大家实现一种点对点的消息模型。如果你对点对点模型的认识较浅,可以看一下第一篇博文的介绍。
解压缩apache-activemq-5.5.1-bin.zip,然后双击...包含了apache-activemq-5.5.1-bin.zip以及ActiveMQ一个helloworld的demo启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。
Version 5 Hello World(你好) Version 5 Initial Configuration(初始化配置) Version 5 Installation(安装) Version 5 Performance Tuning(性能调整) Version 5 Run Broker(运行代理) ...
的基础知识,并且讲解了一个HelloWorld级别的例子帮助理解。这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTP andPub/Sub)、与Spring整合、...
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(...
融合JMS POC 如何运行: 确保Confluent企业和ActiveMQ都已安装并在默认端口上运行。... 请求“ Hello World被发送到一个Confluent主题,该主题由回复者接收并发送回请求者。 注意匹配的相关ID。 现在,您只需更改JNDI
jun_spring 项目module组件功能列表【spring_helloworld】springboot 的一个 helloworld【spring_properties】springboot 读取配置文件中的内容TODO:1、整cs的login跟index的page,适配Nginx跟ssm_jwt;2、整ssm_...
如何在main方法执行前输出”hello world” java程序的初始化顺序 请说出作用域public,private,protected,以及不写时的区别 为什么java中有些接口没有任何方法 java中的clone方法有什么作用 面向对象有哪些特征 ...
:简单Hello World的NodeJS应用特色rhea JavaScript客户端 : Apache Camel 路由使用 ActiveMQ 组件和JmsSSLConnectionFactoy进行 AMQ Online TLS 连接 :Spring 应用程序显示具有 TLS 连接的 AMQ JMS 池库 :使用...
Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包 如何配置SSL 如何使用非root用户监听80端口 如何配置连接器...
【spring_helloworld】springboot 的一个 helloworld 【spring_properties】springboot 读取配置文件中的内容 TODO: 1、整cs的login跟index的page,适配Nginx跟ssm_jwt; 2、整ssm_jwt的代码生成器 3、整ssm_jwt的...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
开始maven 依赖<dependency> <groupId>io.jboot</groupId> <artifactId>jboot</artifactId> <version>3.9.8</version></dependency>Hello World@RequestMapping("/")public class HelloworldController extends ...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...