activimq消息队列基本配置

背景:

在了解一个分布式框架的时候,偶然接触到activimq消息队列,于是就决定写一个小demo

首先是linux配置activimq

去官网下载一个activimq的linux安装包,直接解压,到bin目录下执行:

activemq start

这样就启动了,很简单

然后可以查看是否有新的端口61616被监听

接着查看是否有相关进程

同时activimq还有一个后台监控页面, 但是这个默认端口是8161,访问地址为:

http://10.10.10.30:8161/admin/

默认用户名、密码均为admin

接下来是测试代码,maven库地址:

1 <dependency>
2             <groupId>org.apache.activemq</groupId>
3             <artifactId>activemq-core</artifactId>
4             <version>5.7.0</version>
5         </dependency>
 1 package com.asen.activimq;
 2
 3 import javax.jms.Connection;
 4 import javax.jms.ConnectionFactory;
 5 import javax.jms.DeliveryMode;
 6 import javax.jms.Destination;
 7 import javax.jms.MessageProducer;
 8 import javax.jms.Session;
 9 import javax.jms.TextMessage;
10
11 import org.apache.activemq.ActiveMQConnection;
12 import org.apache.activemq.ActiveMQConnectionFactory;
13
14 public class Sender {
15     private static final int SEND_NUMBER = 5;
16
17     public static void main(String[] args) {
18         // ConnectionFactory :连接工厂,JMS 用它创建连接
19         ConnectionFactory connectionFactory;
20         // Connection :JMS 客户端到JMS
21         // Provider 的连接
22         Connection connection = null;
23         // Session: 一个发送或接收消息的线程
24         Session session;
25         // Destination :消息的目的地;消息发送给谁.
26         Destination destination;
27         // MessageProducer:消息发送者
28         MessageProducer producer;
29         // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
30         connectionFactory = new ActiveMQConnectionFactory(
31                 ActiveMQConnection.DEFAULT_USER,
32                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://10.10.10.30:61616");
33         try {
34             // 从工厂获取连接对象
35             connection = connectionFactory.createConnection();
36             // 启动
37             connection.start();
38             // 获取操作连接
39             session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
40             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
41             // 获取消息目的地
42             destination = session.createQueue("FirstQueue");
43             // 获取发送者
44             producer = session.createProducer(destination);
45             // 设置不持久化,此处学习,实际根据项目决定
46             producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
47             // 构造消息,此处写死,项目就是参数,或者方法获取
48             sendMessage(session, producer);
49             session.commit();
50         } catch (Exception e) {
51             e.printStackTrace();
52         } finally {
53             try {
54                 if (null != connection)
55                     connection.close();
56             } catch (Exception e) {
57                 e.printStackTrace();
58             }
59         }
60     }
61
62     public static void sendMessage(Session session, MessageProducer producer)
63             throws Exception {
64
65         for (int i = 1; i <= SEND_NUMBER; i++) {
66             TextMessage message = session.createTextMessage("ActiveMq 发送消息" + i);
67             // 发送消息到目的地方
68             System.out.println("发送消息:" + "ActiveMq 发送消息" + i);
69             producer.send(message);
70         }
71     }
72 }
 1 package com.asen.activimq;
 2
 3 import javax.jms.Connection;
 4 import javax.jms.ConnectionFactory;
 5 import javax.jms.Destination;
 6 import javax.jms.MessageConsumer;
 7 import javax.jms.Session;
 8 import javax.jms.TextMessage;
 9
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12
13 public class Receiver {
14     public static void main(String[] args) {
15         // ConnectionFactory :连接工厂,JMS 用它创建连接
16         ConnectionFactory connectionFactory;
17         // Connection :JMS 客户端到JMS Provider 的连接
18         Connection connection = null;
19         // Session: 一个发送或接收消息的线程
20         Session session ;
21         // Destination :消息的目的地;消息发送给谁.
22         Destination destination;
23         // 消费者,消息接收者
24         MessageConsumer consumer;
25         // 初始化工厂
26         connectionFactory = new ActiveMQConnectionFactory(
27                 ActiveMQConnection.DEFAULT_USER,
28                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://10.10.10.30:61616");
29         try {
30             // 从工厂获取连接对象
31             connection = connectionFactory.createConnection();
32             // 启动
33             connection.start();
34             // 获取操作连接
35             session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
36             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在ActiveMq的console配置
37             // 获取消息目的地:队列
38             destination = session.createQueue("FirstQueue");
39             // 接收消息
40             consumer = session.createConsumer(destination);
41             while(true){
42                 // 设置接收者接收消息的时间,为了便于测试,这里设定为100s
43                 TextMessage message = (TextMessage)consumer.receive(100000);
44                 System.out.println("message:" + message);
45                 if(null != message){
46                     System.out.println("接收到消息:" + message.getText());
47                 }else{
48                     break;
49                 }
50             }
51         } catch (Exception e) {
52             e.printStackTrace();
53         } finally {
54             try {
55                 if (null != connection) {
56                     connection.close();
57                 }
58             } catch (Exception e) {
59                 e.printStackTrace();
60             }
61         }
62
63     }
64 }

运行之后,后台监控页面可以看见:

activimq持久化常用的有三种方式:1、文件持久化 2、mysql持久化 3、oracle持久化

在activimq的配置文件中默认开启了文件持久化

同时我们需要修改一行代码:

这样在activimq重启之后就不会有消息丢失了

时间: 2024-10-11 21:32:57

activimq消息队列基本配置的相关文章

activimq消息队列持久化配置

activimq持久化常用的有三种方式:1.文件持久化 2.mysql持久化 3.oracle持久化 在activimq的配置文件中默认开启了文件持久化 同时我们需要修改一行代码: 这样在activimq重启之后就不会有消息丢失了 如果要使用mysql持久化的话需要修改配置文件 <persistenceAdapter> <jdbcPersistenceAdapter dataSource="#mysql-ds"/> </persistenceAdapter

RabbitMQ+PHP 消息队列环境配置

参考文档:http://www.cnblogs.com/phpinfo/p/4104551...http://blog.csdn.net/historyasamirror/ar... 依赖包安装 yum install ncurses-devel unixODBC unixODBC-devel erlang环境 wget http://erlang.org/download/otp_src_18.1.tar.gz tar -zxvf otp_src_18.1.tar.gz cd otp_src_

Apache Kafka分布式消息队列安装配置

一.介绍 Apache Kafka是由Apache软件基金会开发的一个开源消息系统项目,由Scala写成.Kafka最初是由LinkedIn开发,并于2011年初开源.2012年10月从Apache Incubator毕业.该项目的目标是为处理实时数据提供一个统一.高通量.低等待的平台. 二.安装环境kafka server IP: 10.0.0.25 10.0.0.26 操作系统: CentOS 6.5 x86_64 须用到的软件包: jdk-1.7.0_65-fcs.x86_64 java-

RabbitMqHelper 消息队列帮助类

using Newtonsoft.Json;using RabbitMQ.Client;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace RabbitMQ_Send{ class ConfigModel { } public enum ExchangeTypeEnum { /// <summary> /

RabbitMQ消息队列安装和配置以及推送消息

好久没有写了,最近项目用到RabbitMQ,找了一些资料试验,最后终于成功了,把安装配置的步骤分享给大家. 一.Erlang安装具体过程: 1.双击otp_win32_R16801.exe(不同版本可能命名字不一样),选择next 2.默认安装在C盘,建议程序安装在非系统盘比如D盘(如果安装在C盘可能会出现一些权限问题),修改好安装路径后,选next: 3.进入安装程序,选择install,即可完成安装. 配置环境变量:在系统变量下添加 变量名:ERLANG_HOME,变量值:C:\Progra

MQ中将消息发送至远程队列的配置

MQ中将消息发送至远程队列的配置 摘自MQ资源管理器帮助文档V7 在开始学习本教程之前,您需要从系统管理员处了解标识网络上接收机器的名称:IP地址.MQ的端口号.队列管理器.接收(远程机器)或者是发送的队列(本地机器)名称. 消息传递如图示: 本教程介绍了如何设置一台计算机上的队列管理器 QM_ORANGE 与另一台计算机上的队列管理器 QM_APPLE 之间的消息传递.在第一台计算机上创建的消息被传递到第二台计算机上的队列 Q1(此队列被称为远程队列). 要点: 在本教程中,您将使用创建了队列

柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装、配置与监控

柯南君上一章<看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍>中,粗略的讲了一下,目前消息队列的几种常见产品的优劣对比,接下来的几章节会分别详细阐述,本章介绍RabbitMQ,好吧,废话少说,正式开始: 一.安装 1.安装Erlang 1)系统编译环境(这里采用linux/unix 环境) ① 安装环境 虚拟机:VMware? Workstation 10.0.1 build Linux系统:CentOS6.5 rabbitMQ官网下载:http://www.rab

RabbitMQ消息队列集群配置

RabbitMQ是什么? MQ(Message Queue,消息队列)消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息同步. 原理介绍 rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以

RabbitMQ(消息队列)集群配置与使用篇

介绍 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求.其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等. MQ特点 MQ是消费-生产者模型的一个典型