java jms消息队列_JMS消息队列ActiveMQ(发布/订阅模式)

消费者1(Consumer)--订阅(subcribe)-->主题(Topic)package com.java1234.activemq2;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageConsumer;

import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;

import org.apache.activemq.ActiveMQConnectionFactory;

/**

* 消息消费者-消息订阅者一

* @author Administrator

*

*/

public class JMSConsumer {

private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名

private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码

private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址

public static void main(String[] args) {

ConnectionFactory connectionFactory; // 连接工厂

Connection connection = null; // 连接

Session session; // 会话 接受或者发送消息的线程

Destination destination; // 消息的目的地

MessageConsumer messageConsumer; // 消息的消费者

// 实例化连接工厂

connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);

try {

connection=connectionFactory.createConnection();  // 通过连接工厂获取连接

connection.start(); // 启动连接

session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session

// destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列

destination=session.createTopic("FirstTopic1");

messageConsumer=session.createConsumer(destination); // 创建消息消费者

messageConsumer.setMessageListener(new Listener()); // 注册消息监听

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}package com.java1234.activemq2;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.TextMessage;

/**

* 消息监听-订阅者一

* @author Administrator

*

*/

public class Listener implements MessageListener{

@Override

public void onMessage(Message message) {

// TODO Auto-generated method stub

try {

System.out.println("订阅者一收到的消息:"+((TextMessage)message).getText());

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

消费者2(Consumer)--订阅(subcribe)-->主题(Topic)

生产者(Producer)--发布(publish)-->主题(Topic)package com.java1234.activemq2;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageProducer;

import javax.jms.Session;

import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;

import org.apache.activemq.ActiveMQConnectionFactory;

/**

* 消息生产者-消息发布者

* @author Administrator

*

*/

public class JMSProducer {

private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名

private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码

private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址

private static final int SENDNUM=10; // 发送的消息数量

public static void main(String[] args) {

ConnectionFactory connectionFactory; // 连接工厂

Connection connection = null; // 连接

Session session; // 会话 接受或者发送消息的线程

Destination destination; // 消息的目的地

MessageProducer messageProducer; // 消息生产者

// 实例化连接工厂

connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);

try {

connection=connectionFactory.createConnection(); // 通过连接工厂获取连接

connection.start(); // 启动连接

session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 创建Session

// destination=session.createQueue("FirstQueue1"); // 创建消息队列

destination=session.createTopic("FirstTopic1");//创建主题

messageProducer=session.createProducer(destination); // 创建消息生产者

sendMessage(session, messageProducer); // 发送消息

session.commit();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally{

if(connection!=null){

try {

connection.close();

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

/**

* 发送消息

* @param session

* @param messageProducer

* @throws Exception

*/

public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{

for(int i=0;i

TextMessage message=session.createTextMessage("ActiveMQ 发送的消息"+i);

System.out.println("发送消息:"+"ActiveMQ 发布的消息"+i);

messageProducer.send(message);

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值