消息队列的作用

为什么使用ActiveMQ,不使用其他工具

下载安装包并启动

http://localhost:8161/admin/ (账号:admin:admin)

Java实现步骤:

// 1.创建连接工厂对象(ConnectionFactory)
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
// 2.创建连接对象(Connection)
Connection connection = connectionFactory.createConnection();
// 3.启动连接
connection.start();
// 4.创建session会话,第一参数表示启用事务处理,第二个参数表示启动哪种应答模式,这里启用的是自动应答
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5.创建目的地(queue/topic)
Queue queue = session.createQueue(QUEUE_NAME);
// 6.创建生产者/消费者
MessageProducer producer = session.createProducer(queue);
// 7.生产/消费消息
producer.send(message);

生产者代码:

public class MQProducer {
private static final String URL = "tcp://localhost:61616";
private static final String QUEUE_NAME = "queue-test";
private static final String TOPIC_NAME = "topic-test"; public static void main(String[] args) throws JMSException {
ConnectionFactory ConnectionFactory = new ActiveMQConnectionFactory(URL);
Connection connection = ConnectionFactory.createConnection();
connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue(QUEUE_NAME);
// Topic destination = session.createTopic(TOPIC_NAME); // Topic消息
MessageProducer producer = session.createProducer(destination);
for(int i = 0; i < 10; i++) {
TextMessage message = session.createTextMessage("Message" + i);
producer.send(message);
System.out.println("Sent message" + i);
} producer.close();
session.close();
connection.close();
}
}

消费者代码:

public class MQConsumer {
private static final String URL = "tcp://localhost:61616";
private static final String QUEUE_NAME = "queue-test";
private static final String TOPIC_NAME = "topic-test"; public static void main(String[] args) throws JMSException, InterruptedException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
Connection connection = connectionFactory.createConnection(); // 消费者1 : Queue & Topic Consumer
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue(QUEUE_NAME); // Topic destination = session.createTopic(TOPIC_NAME);
MessageConsumer consumer = session.createConsumer(destination); // 消费者2 : Topic Subscriber
// connection.setClientID("client-test");
// connection.start();
// Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Topic destination = session.createTopic(TOPIC_NAME);
// TopicSubscriber consumer = session.createDurableSubscriber(destination, "subscription-test"); // 接收消息1 : MessageListener异步接收消息
consumer.setMessageListener(new MessageListener(){
@Override
public void onMessage(Message message) {
try {
System.out.println("Received " + ((TextMessage) message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
Thread.sleep(10000); // 主线程等待一段时间后结束 // 接收消息2 : receive同步阻塞等待消息
// for(int i = 0; i < 10; i++) {
// TextMessage message = (TextMessage) consumer.receive();
// System.out.println("Received " + message.getText());
// } consumer.close();
session.close();
connection.close();
}
}

Producer consumer receive messageListener

topic

queue

JMS

消息可靠性之持久化  JDBC

topic持久化

事务

签收

点对点发布订阅

spring整合activemq

zookeeper+replicated levelDB

异步投递

延迟投递

定时投递

重试机制

死信队列

防止重复调用

最新文章

  1. [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具
  2. h5
  3. [jQuery学习系列五 ]5-Jquery学习五-表单验证
  4. 第二次作业----自学c++的选择与计划
  5. Leetcode: Longest Palindromic Substring. java
  6. java 考试试题
  7. java_设计模式_命令模式_Command Pattern(2016-08-09)
  8. (转)QT常用快捷键
  9. linux下查看文件系统类型
  10. Divide and Conquer.(Merge Sort) by sixleaves
  11. 共享库方案解决WAS中JAR包冲突
  12. 开辟html5和css3学习随笔(2015-3-2)
  13. prototype属性的理解
  14. AdobeFlashBuilder还不如AdobeFlashProfessional写actionscript体验好
  15. meta的各种参数
  16. C#截取用户的点击事件的代码
  17. Linux 小知识翻译 - 「RFC」
  18. MyBatis-SqlSessionFactory的创建
  19. python 的基础学习 第九天 文件的操作
  20. POJ3017 Cut the Sequence

热门文章

  1. Math 类
  2. 全球DEM高程数据下载
  3. POJ 1251 Jungle Roads - C语言 - Kruskal算法
  4. 文件包含lfi
  5. Cpp_Primer_4th_Edition-source-code
  6. mpx小程序框架
  7. Kafka 消费者
  8. Java线程本地存储ThreadLocal
  9. Charles配置https
  10. iptables限制访问