java怎么连接activemq集群_activemq集群搭建与多线程消息发送接收案例

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:amq="http://activemq.apache.org/schema/core"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.8.0.xsd">

classpath:activemqconfig.properties

配置监听类的方式的消息消费方配置文件的编写:activemqCustomer.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:amq="http://activemq.apache.org/schema/core"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.8.0.xsd">

classpath:activemqconfig.properties

在这里配置了两个消息消费的监听类用于监听不同消息队列中传递的消息类型

知识点介绍:

activemq支持的消息类型为5种分别为:

session.createTextMessage();   String数据类型

session.createMapMessage();    Map键值对数据类型

session.createStreamMessage(); StreamIO流数据  可以传递文件

session.createObjectMessage(); 对象数据类型,要求对象类需要实现序列化接口

session.createBytesMessage();  传递字节数据数据类型

注意在传递流数据类型时 在向消息队列中存储数据时,发送方存储的时候是可以一直存储但是在消费方获取的时候只能取到最后一次存储的数据

所以需要在向streamMessage对象中存储一次数据就发送一次数据

MessageProducerproducer=session.createrProducer("目标队列")

Filefile=newFile("c:\\a.txt");

FileInputStreamin=newFileInputStream(file);

byte[]bytes=newbyte[1024];

inti=-1;

while((i=in.read(bytes))!=-1){

message=session.createStreamMessage();

//这个方法实现在消息队列中存储键值对信息 文件名作为参数在消费方获取

message.setStringProperty("filename",filename);

//将messge中的信息进行清除

message.clearBody();

message.writeBytes(bytes);

producer.send(message);

}

消息流对象可以实现传递任意格式的文件,所以我们在传递大文件时,可以先实现将文件进行压缩然后再进行发送,在消息消费方再进行解压实现文件的快速传递。

3、消息发送方与消息消费方

消息消费方属性注入jmsTemplate对象调用send方法 编写匿名内部类MesageCreator类,重写里面的createMessage方法,获取session会话对象,实现消息的发送。

消息消费方,在配置文件里面配置了实体类的位置之后,在编写实体类时实现MessageListener类重写onMessage方法对接收的方法进行判断。

例子代码:

消息发送方:

importjavax.jms.JMSException;

importjavax.jms.MapMessage;

importjavax.jms.Message;

importjavax.jms.Session;

importorg.springframework.jms.core.JmsTemplate;

importorg.springframework.jms.core.MessageCreator;

publicclassSender{

privateJmsTemplatejmsTemplate;

//getter and setter

publicJmsTemplategetJmsTemplate(){

returnjmsTemplate;

}

publicvoidsetJmsTemplate(JmsTemplatejmsTemplate){

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值