基本步骤:

            ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination que = new ActiveMQQueue("que");
MessageProducer producer = session.createProducer(que);
TextMessage msg = session.createTextMessage("hello activemq");
producer.send(msg);
//session.commit();
session.close();
connection.close();

注意的地方

1、连接开启

connection.start();

2.1、会话类型(事务型,非事务型)

connection.createSession(false, Session.AUTO_ACKNOWLEDGE)的参数一

2.2、应答模式

connection.createSession(false, Session.AUTO_ACKNOWLEDGE)的参数二

    int AUTO_ACKNOWLEDGE = 1;
int CLIENT_ACKNOWLEDGE = 2;
int DUPS_OK_ACKNOWLEDGE = 3;
int SESSION_TRANSACTED = 0;

2.3、组合方式

false:

int AUTO_ACKNOWLEDGE = 1;

int CLIENT_ACKNOWLEDGE = 2;

int DUPS_OK_ACKNOWLEDGE = 3;

true:

int SESSION_TRANSACTED = 0;

事务型需要session.commit()

非事务型不能session.commit()

持久化

默认是持久化的,消息保存在磁盘,所以即使mq挂了,消息不会丢失

        <persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>

配置持久化:

producer.setDeliveryMode(DeliveryMode.PERSISTENT);
public interface DeliveryMode {
int NON_PERSISTENT = 1;
int PERSISTENT = 2;
}

异步

发送消息

            ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
factory.setUseAsyncSend(true);

非持久化消息模式下,默认就是异步发送过程,如果需要对非持久化消息的每次发送的消息都获得broker的回执的话

connectionFactory.setAlwaysSyncSend()

接受消息

public class MsgReceiver {
public static void main(String[] args) { try {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination que = new ActiveMQQueue("que");
MessageConsumer consumer = session.createConsumer(que);
consumer.setMessageListener(new MsgListener());
//session.commit();
//session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
} class MsgListener implements MessageListener { @Override
public void onMessage(Message message) {
TextMessage msg = (TextMessage) message;
try {
System.out.println(msg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}

异步接收不能提前关闭session,非事务不能commit()

activemq学习笔记2的更多相关文章

  1. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  2. apache activemq 学习笔记

    0.activemq的概念 activemq实现了jms(java Message server),用于接收,发送,处理消息的开源消息总线. 1.activemq和jms的区别 jms说白了就是jav ...

  3. ActiveMQ学习笔记

    关键接口和类: ConnectionFactory connectionFactory;//连接工厂 Connection connection;//连接 Session session; Desti ...

  4. ActiveMQ 学习笔记

    http://somebody-hjh.iteye.com/blog/726050 一.概述 Message,即消息.人与人之间通过消息传递信息.言语.眼神.肢体动作都可被视为消息体.当然还有我们经常 ...

  5. ActiveMQ学习笔记(二) JMS与Spring

    上文可见,JMS Native API使用起来不是特别方便.好在Spring提供了很好的JMS支持. (一)配置ConnectionFactory 如果使用连接池的话,不要忘记activemq-poo ...

  6. ActiveMQ学习笔记(一) JMS概要

    (一)什么是JMS jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  7. ActiveMQ学习笔记1

    1.接口 JMS 公共 点对点域 发布/订阅域 ConnectionFactory QueueConnectionFactory TopicConnectionFactory Connection Q ...

  8. ActiveMQ学习笔记(22)----ActiveMQ的优化和使用建议

    1. 什么时候使用ActiveMQ 1. 异步通信 2. 一对多通信 3. 做个系统的集成,同构,异构 4. 作为RPC的替代 5. 多个应用相互解耦 6. 作为事件驱动架构的幕后支撑 7. 为了提高 ...

  9. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat

    1. 监控和管理Broker Web Console 方式:直接访问ActiveMQ的管理页面:http://localhost:8161/admin,默认的用户名和密码是admin/admin.具体 ...

随机推荐

  1. threading:线程创建、启动、睡眠、退出

    1.方法一:将要执行的函数作为参数传递给threading.Thread() import threading import time def func(n): global count time.s ...

  2. SqlAlchenmy基本使用

    #简单查询 print(session.query(User).all()) print(session.query(User.name, User.fullname).all()) print(se ...

  3. Java项目中,如何限制每个用户访问接口的次数

    转自:https://blog.csdn.net/qq_30947533/article/details/78844709 方法1:数据访问量大的话 用redis来做,用户在调用短信接口时,先根据用户 ...

  4. Hadoop问题:java.net.SocketException: Network is unreachable

    问题描述:Failed on local exception: java.net.SocketException: Network is unreachable; Host Details : loc ...

  5. JAVA-try-catch-finally-自定义异常例子(适合初学者)

    package com.net.xinfang.reflect; import java.io.IOException; import java.util.Scanner; /*** * 运行try块 ...

  6. ubuntu 14.04中安装 ruby on rails 环境

    环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 1. bundle install 时,报json错误可以看出是在安装nokogiri时遇到了问题,此时执行 sudo ap ...

  7. MY服务器架设

    研究了一天,终于弄出来了,进游戏耍了会,感觉不错,下面分享架设步骤给大家 分享端的大大也出了个虚拟机运行需要注意的视频,大家看看吧,我就这样弄架设成功了 链接:链接: http://pan.baidu ...

  8. redis互斥锁简易设计原理【原】

    redis互斥锁设计 方式一: 使用 set(arg1,arg2,arg3,arg4,arg5) 绿线部分代码 //如果不存在就设置,且设置成功60秒后key自动失效,成功会返回字符串"OK ...

  9. jQuery使用(一):jQuery对象与选择器

    一.简单的一些介绍 1.jQuery是由普通的是由一些系列操作DOM节点的函数和一些其他的工具方法组成的js库. 2.为什么要使用jQuery库? jQuery面向用户良好的设计在使用过程中彻底解放了 ...

  10. IO流--序列化流与反序列化流

    IO流--序列化流与反序列化流: 序列化流:把对象当做流一样写入到文本文件中 ObjectOutputSream(); 反序列化流:把文本文件中的流对象还原成对象ObjectInputSream(): ...