java Activemq的HelloWorld

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:61616
		ConnectionFactory  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:61616
		ConnectionFactory  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值