java Activemq的HelloWorld

来源:互联网 发布:3d打鱼源码 编辑:程序博客网 时间:2024/06/01 19:56

Activemq可以说是核心,是基础,是一个完全支持JMS规范的JMS Provider实现 ,实现JMS 接口的消息中间件,

它非常快速,支持多种语言的客户端和协议,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。

简单介绍一下JMS的术语:

Provider (messageProvider):生产者

Consumer(messsageConsumer):消费者

PTP:PONIT TO POINT 即点对点的消息模型;

Pub/Sub: Publish/Subscribe 即发布/订阅

Queue : 队列目标

Topic: 主题目标

ConnectionFactory : 连接工厂

Connection: JMS客户端到 服务端的连接;

Destination:消息的目的地;

Session:会话 一个发送或接受消息的线程;


消息中间件

JMS定义了五种不用的消息格式:
StreamMessage java原始的数据流
MapMessage 键值对
TextMessage 字符串对象
ObjectMessage 一个序列化的java对象
BytesMessage 一个为解释字节的数据流

我们简单的介绍一下消息中间件,对它有一个基本认识就好,消息中间件(MOM:Message Orient middleware)。

消息中间件有很多的用途和优点: 
1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外一个模块; 
2. 负责建立网络通信的通道,进行数据的可靠传送。 
3. 保证数据不重发,不丢失 
4. 能够实现跨平台操作,能够为不同操作系统上的软件集成技工数据传送服务



1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/


2.运行ActiveMQ
解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。


启动ActiveMQ以后,登陆:http://localhost:8161/admin/, 修改端口号的话 conf/jetty.xml,jetty-realm.properties 添加用户名密码

conf /activemq.xml 增加认证





我们来做个HelloWord

package com.ccopo.helloword;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class sender {public static void main(String[] args) throws JMSException{//第一步 : 建立ConnectionFactory 工厂对象,需要填入用户名密码,以及要连接的地址,均使用默认即可,默认端口为:tcp://localhsot:61616ConnectionFactory  connectionFactory =new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://DESKTOP-60HPCCD:61616");//第二步:通过connectionFactory 工厂对象我们创建一个Connection连接,并且调用Connection的Start方法开启连接 因为Connection默认关闭的Connection Connection= connectionFactory.createConnection();Connection.start();//第三步:通过Connection对象创建Session会话 ,用于接受消息,参数配置1为是否启用事务,2为签收模式,一般我们都是自动签收Session session =Connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);//第四步 :通过Session创建Destination对象,指的是一个客户端用来指定生产消息目标和消费消息来源的对象,在PTP模式中,Destination为称作Queue Destination Destination=session.createQueue("queue1");//第五步L我们需要通过Session 创建消息的发送和接收对象MessageProducer  messageProducer=session.createProducer(Destination);//第六步:我们可以使用MessageProducer的setDeliverMode方法为其设置持久化和非持久化messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//第七步:最后我们使用JMS的TextMessage形式的创建数据,并用messageProducer的Send方法发送数据TextMessage  textMessage= session.createTextMessage("我是消息");textMessage.setText("我是消息");messageProducer.send(textMessage);if(Connection!=null){Connection.close();}}}


package com.ccopo.helloword;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class Receive {public static void main(String[] args) throws JMSException{//第一步 : 建立ConnectionFactory 工厂对象,需要填入用户名密码,以及要连接的地址,均使用默认即可,默认端口为:tcp://localhsot:61616ConnectionFactory  connectionFactory =new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://DESKTOP-60HPCCD:61616");//第二步:通过connectionFactory 工厂对象我们创建一个Connection连接,并且调用Connection的Start方法开启连接 因为Connection默认关闭的Connection Connection= connectionFactory.createConnection();Connection.start();//第三步:通过Connection对象创建Session会话 ,用于接受消息,参数配置1为是否启用事务,2为签收模式,一般我们都是自动签收Session session =Connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);//第四步 :通过Session创建Destination对象,指的是一个客户端用来指定生产消息目标和消费消息来源的对象,在PTP模式中,Destination为称作Queue Destination Destination=session.createQueue("queue1");//第五步L我们需要通过Session 创建消息的发送和接收对象MessageConsumer  messageConsumer=session.createConsumer(Destination);while(true){TextMessage textMessage =(TextMessage) messageConsumer.receive();//阻塞的if(textMessage==null)break;System.out.println("收到的内容:"+textMessage.getText());}if(Connection!=null){Connection.close();}}}





1 0
原创粉丝点击