rabbitmq实例_rabbitmq创建队列

rabbitmq实例_rabbitmq创建队列RabbitMQ简介RabbitMQ是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。具有高可用高并发的优点,适合集群服务器。采用Erlang实现,对主要的编程语言都有客户端支持。RabbitMQ环境配置linux下环境配置我用的是centos6.5版本。先从这个地址下载安装包下载地址$tar-zxvfotp_…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

RabbitMQ简介

RabbitMQ是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。具有高可用高并发的优点,适合集群服务器。采用 Erlang实现, 对主要的编程语言都有客户端支持。

RabbitMQ环境配置

linux下环境配置

我用的是centos 6.5版本。

先从这个地址下载安装包

下载地址

$ tar -zxvf otp_src_18.3.tar.gz 

$ cd otp_src_18.3

$ ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac

$ make

$ sudo make install

配置环境变量

vim /etc/profile

在文件末尾添加下面文字:

ERLANG_HOME=/usr/local/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH

使环境变量生效

source /etc/profile

然后下载RabbitMQ,下载地址

先安装依赖

$ sudo yum install xmlto
$ xz -d rabbitmq-server-generic-unix-3.6.1.tar.xz

$ tar -xvf rabbitmq-server-generic-unix-3.6.1.tar 

# 移动目录
$ sudo cp -rf ./rabbitmq_server-3.6.1/ /usr/local/

$ cd /usr/local

#改名字
$  mv rabbitmq_server-3.6.1 rabbitmq-3.6.1

# 安装web管理插件
$ cd sbin/

$ ./rabbitmq-plugins enable rabbitmq_management

启动和关闭服务

$ ./rabbitmq-server

# 后台启动
$ ./rabbitmq-server -detached

# 关闭
$ ./rabbitmqctl stop

登录web管理端

启动rabbitmq,然后浏览器输入
http://10.0.0.221:15672/

这个ip地址是你实际安装的主机的ip,请根据实际情况修改。

这里写图片描述

下面配置登录账号

$ ./rabbitmqctl add_user pony 123456
Creating user "pony" ...

$ ./rabbitmqctl set_user_tags pony administrator       
Setting tags for user "pony" to [administrator] ...

刷新下,用刚才创建的账号登录,如下:

这里写图片描述

有一点要注意,如果主机配有防火墙,要把用到的端口都打开

-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671 -j ACCEPT

windows下环境配置

erlang下载地址

rabbitmq下载地址

可以根据需要下载自己所需要的版本,我这里下载的分别是:

otp_win64_18.3.exe和rabbitmq-server-3.6.9.exe

默认方式安装otp_win64_18.3.exe,完成后,配置环境变量

ERLANG_HOME C:\Program Files\erl7.3

添加到PATH

%ERLANG_HOME%\bin;

默认方式安装rabbitmq-server-3.6.9.exe,完成后,配置环境变量

RABBITMQ_SERVER C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9

添加到PATH

%RABBITMQ_SERVER%\sbin;

进入sbin目录打开一个控制台,安装web管理插件

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmq-plugins.bat enable rabbitmq_management

然后重启下服务使上面的配置生效(注意这里要使用管理员打开cmd命令行,路径无影响),

C:\WINDOWS\system32>net stop RabbitMQ && net start RabbitMQ
RabbitMQ 服务正在停止.
RabbitMQ 服务已成功停止。

RabbitMQ 服务正在启动 .
RabbitMQ 服务已经启动成功。


C:\WINDOWS\system32>

打开浏览器,输入http://localhost:15672/,可以正常访问。由于我是在本机安装,所以这里是localhost。

接下来配置一个账号并赋予管理员权限(当然要确保是启动状态),

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmqctl.bat add_user pony 123456
Creating user "pony" ...

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin>rabbitmqctl.bat set_user_tags pony administrator
Setting tags for user "pony" to [administrator] ...

在web端用这个账号登录,可以成功!

java调用示例

我的开发环境是myeclipse+win10,windows环境下已经按照前面章节配置好了rabbitmq服务。**然后保持启动状态。**java要使用rabbitmq需要依赖一个客户端。下载地址

如果用maven的话就不用下载,配置文件加上依赖描述即可。

我这里新建两个工程,分别为RabbitMQDemo-P(表示生产者)和RabbitMQDemo-C(表示消费者),两个工程运行起来后就代表两个独立的进程通过消息队列通信。生产者不断的往消息队列发送消息,而消费者不断的从队列取消息。工程中导入前面下载的客户端依赖包。

源码来自:rabbitmq-tutorials

eclipse工程源码下载地址

这里写图片描述

先生产者的代码:


private final static String QUEUE_NAME = "hello";
	
	public static void main(String[] args) throws Exception{ 
   
		// TODO Auto-generated method stub
		
		ConnectionFactory factory = new ConnectionFactory();
	    factory.setHost("localhost");//因为两个进程在同一个机器上
	    Connection connection = null;
	    Channel channel = null;
	    
		connection = factory.newConnection();
		channel = connection.createChannel();
		
		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
		String message = "Hello World!";
		channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
		System.out.println(" [Producer] Sent '" + message + "'");
		    
		channel.close();
		connection.close();
	}

比较简单,涉及到的API具体说明可以自行搜索学习。运行一次就往名为hello的队列上发布一条消息:“Hello World”,然后进程结束。

消费者稍微复杂一点,

private final static String QUEUE_NAME = "hello";
	
	public static void main(String[] args) throws Exception{ 
   
		
		ConnectionFactory factory = new ConnectionFactory();
	    factory.setHost("localhost");
	    Connection connection = factory.newConnection();
	    Channel channel = connection.createChannel();

	    channel.queueDeclare(QUEUE_NAME, false, false, false, null);
	    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

	    Consumer consumer = new DefaultConsumer(channel) { 
   
	      @Override
	      public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
	          throws IOException { 
   
	        String message = new String(body, "UTF-8");
	        System.out.println(" [Consumer] Received '" + message + "'");
	      }
	    };
	    channel.basicConsume(QUEUE_NAME, true, consumer);
		
	}

Channel.basicConsume方法将Consumer与消息队列绑定,它的定义如下:

String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException 

第一个参数是Consumer绑定的队列名,第二个参数是自动确认标志,如果为true,表示Consumer接受到消息后,会自动发确认消息(Ack消息)给消息队列,消息队列会将这条消息从消息队列里删除,第三个参数就是Consumer对象,用于处理接收到的消息。

第三个参数其实是个回调,当消费者收到消息时,会调用Consumer对象的handleDelivery方法。我们这里重写了这个方法,收到消息之后打印出来。

先运行消费者,如下:

 [*] Waiting for messages. To exit press CTRL+C

开始等待消息。

再运行生产者,如下:

 [Producer] Sent 'Hello World!'

再次看下消费者的控制台信息,接收到消息:

 [*] Waiting for messages. To exit press CTRL+C
 [Consumer] Received 'Hello World!'

在这里插入图片描述
欢迎大家关注我的公众号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189011.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java项目视频

    java项目视频java版qq:http://pan.baidu.com/s/1orpxsssh智慧团:http://pan.baidu.com/s/1cLU4m巴巴运动网项目:http://pan.baidu.com/s/15SiSW国家电力项目:http://pan.baidu.com/s/1Gb7KI(强烈推荐)银行业务调度系统:http://pan.baidu.com/s/1kn4Gq

    2022年10月3日
    0
  • java除零异常_JAVA异常处理

    java除零异常_JAVA异常处理出bug是写代码的时候非常常见的情况,今天就来讲一下。首先明确一下什么是异常,代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行,就是异常。1.常见的异常有以下几种:1.System.out.println(1/0);//java.lang.ArithmeticException:/byzero除以零结果无穷大异常2.Stringstr=null;Syst…

    2022年5月18日
    66
  • ping和tracert的原理_ping和tracert的作用是什么

    ping和tracert的原理_ping和tracert的作用是什么ping程序是利用icmp的回复请求来探测远端主机是否可达。(并不能继续判断端口是否可达。要想查看端口,就要使用扫描器了。)win2000里的网络库里已经提供网络函数库(icmp.dll)可以实现利用icmp来探测远端主机。相比起使用管道来读ping的结果,或者嵌入ping源码,这个是最简单的方法了(没办法,人懒)。ping其实还有一个R选项,用来记录经过的路由,以前一直不知道。(pingww

    2022年9月25日
    0
  • Java GUI编程11—单选按钮:JRadioButton

    Java GUI编程11—单选按钮:JRadioButton认识JRadionButton单选按钮就是在给定的多个选择项中选择一个,并且只能选择一个。在Swing中可以使用JRadioButton完成一组单选按钮的操作,JRadioButton的常用方法如下表。序号方法描述123456…

    2022年5月30日
    44
  • C语言中break和continue的用法「建议收藏」

    C语言中break和continue的用法「建议收藏」switch选择switch(表达式){ case常量表达式1:语句1; case常量表达式1:语句1; default:语句3;}所有case后面的表达式只能是:枚举常量、数值变量、字符常量、常变量#include<stdio.h>intmain(void){ intval; printf(“请输入您想进入的层数:”); sca…

    2022年6月6日
    27
  • 全部覆盖棋盘7×7_acwing题库

    全部覆盖棋盘7×7_acwing题库给定一个 N 行 N 列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为 2、宽度为 1 的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数 N 和 t,其中 t 为禁止放置的格子的数量。接下来 t 行每行包含两个整数 x 和 y,表示位于第 x 行第 y 列的格子禁止放置,行列数从 1 开始。输出格式输出一个整数,表示结果。数据范围1≤N≤100,0≤t≤100输出样例:8 0输出样例:32#include&l

    2022年8月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号