java消息中间件ActiveMQ学习(二)

接着上回说到,ActiveMq相关基础操作已经完成。下面就是实际操作啦。。。有点小激动。。。好了,废话不多说!!!

1、消息模式:queue(点对点)模式、topic(发布/订阅)模式

queue(点对点)模式:在点对点的传输方式,数据被持久化,在传输的过程中不会丢失。一对一的发布接受方式,保证了数据的完整。

topic(发布/订阅)模式:可以有多个消息消费者一起对同一个消息消费(也就是订阅)。也就是一对多的传输方式,和queue(点对点)传输方式有些不同,它可以被所有的消费者所订阅。

在这就不详细说消息持久化订阅了。。。

2、queue(点对点)模式的实现代码

不管你是创建普通的java项目还是创建maven项目,如果你是创建普通的java项目你只要把相应的jar包导入项目中,如下图所示:

如果是maven项目的话,只需要在pom.xml文件中加入,如下代码:

<dependency>

    <groupId>org.apache.activemq</groupId>

    <artifactId>activemq-all</artifactId>

    <version>5.15.2</version>

</dependency>

更新一下本地maven库就行了。

(1)、queue/topic-消息生产者相关代码:

public static void main(String[] args) throws JMSException{
//连接账号
String username = "";
//连接密码
String pwd = "";
//连接地址
String tcp = "";
// 连接到ActiveMQ服务器  
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(username,pwd,tcp);  
        Connection connection = factory.createConnection();  
        connection.start();  
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);  

        //点对点模-主题

         Queue queue = session.createQueue("slimsmart.topic.test");

        //topic(发布与订阅)模式-主题

        //Topic topic = session.createTopic("test");  
        MessageProducer producer = session.createProducer(queue);  
        // NON_PERSISTENT 非持久化 PERSISTENT 持久化,发送消息时用使用持久模式  
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);  
        TextMessage message = session.createTextMessage();  
        message.setText("queue 消息。");  
        message.setStringProperty("property", "test");  
        // 发布主题消息  
        producer.send(message);  
        session.commit();  
        session.close();  
        connection.close(); 

    }

(2)、queue/topic-消息消费者相关代码

public static void main(String[] args) throws JMSException{
//连接账号
String username = "";
//连接密码
String pwd = "";
//连接地址
String tcp = "";
//消费者唯一标识(订阅者)
String clientId = "client_id";  
        // 连接到ActiveMQ服务器  
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(username,pwd,tcp);  
        Connection connection = factory.createConnection();  
        //客户端ID,持久订阅需要设置  
        connection.setClientID(clientId);  
        connection.start();  
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
        //queue-主题(需要与生产者主题一致,否则无法获取消息)
        Destination queue = session.createQueue("test");
        //topic-主题
        //Topic topic = session.createTopic("test");  
        //queue-创建持久订阅,指定客户端ID。  
        MessageConsumer consumer = session.createConsumer(queue,clientId);
        // topic - 创建持久订阅,指定客户端ID。  
        //MessageConsumer consumer = session.createDurableSubscriber(topic,clientId);  
        consumer.setMessageListener(new MessageListener() {
// 订阅接收方法  
@Override
    public void onMessage(Message message) {  
        TextMessage tm = (TextMessage) message;  
        try {  
            System.out.println("消费一条:" tm.getText());  
        } catch (JMSException e) {  
            e.printStackTrace();  
        }  
    }  
});

    }

以上代码演示中,全部都是文本消息类型。那activeMq都有哪些消息类型呢?将在下一篇说明。

 

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值