RabbitMQ简单使用
环境搭建:
RabitMQ是用Elang编写的,虽然Elang本身是跨平台的,但也同时意味着搭建Rabit环境需要首先配置Elang环境。配置RabitMQ的网上教程还比较多的:
在Linux下配置也是差不多的,可以参考这篇文档: RabbitMQ基础
总结下就是如下步骤:
- 安装Elng运行环境
- 安装Elang
- 安装RabbitMQ
- 配置环境变量
- 启动RabbitMQServer,并配置为服务
- 配置可视化插件
- 创建用户,设置密码、分配角色
- 设置用户VirtualHost访问权限
配置完成后,可以从Web控制台访问: http://192.168.241.128:15672/
Docker方式环境搭建
Docker环境下安装就比较简单了,安装带部署一条命令直接到位:
docker run -d --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
默认用户名和密码是guest/guest。如果要设置用户名和权限,可以通过环境变量的方式设置:
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
更多的设置可以参考网上文章:使用Docker部署RabbitMQ集群
安装客户端库:
Install-Package RabbitMQ.Client
创建Connection和Channel
首先还是看看RabbitMQ的模型图:
一个会话是一个channel,所有操作都是基于channel进行的。
var factory = new ConnectionFactory
{
UserName = "guest", Password = "guest", VirtualHost = "/", HostName = "192.168.241.128"
};
var conn = factory.CreateConnection();
var channel = conn.CreateModel();
创建Exchange、Queue和Bind
channel.ExchangeDeclare("exchange1", ExchangeType.Direct);
channel.QueueDeclare("queue1", false, false, false, null);
channel.QueueBind("queue1", "exchange1", "route1", null);
发布消息
消息是发布到exchange上,并且需要指定路由。
var message = DateTime.Now.ToString();
byte[] data = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("exchange1", "route1", null, data);
接收消息
接收消息只需要指定queue即可。
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine($" [x] Received {message}");
};
channel.BasicConsume(queue: "queue1", autoAck: true, consumer: consumer);
接收消息主要是通过BasicConsume函数进行,它需要指定一个消费者IBasicConsumer,这里我用的是基于事件的EventingBasicConsumer,系统默认还有许多其它的实现,这里就不一一举例了。
业务模型
我这里只是简单的演示了API的使用,具体的各业务模型可以参考官方的文档。
RabbitMQ简单使用的更多相关文章
- rabbitmq简单收发服务搭建
消息发送.接收简单代码示例 mq.xml //rabbitmq config spring.rabbitmq.host=ip:host spring.rabbitmq.username= spring ...
- RabbitMQ简单应用の简单队列
(1)首先创建一个maven项目: pom.xml,重点是配置RabbitMQ <dependencies> <dependency> <groupId>junit ...
- AMQP消息队列之RabbitMQ简单示例
前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个 ...
- rabbitmq简单实例
JMS组件:activemq(慢)AMQP组件(advance message queue protocol):rabbitmq和kafka 一..消息队列解决了什么问题?异步处理应用解耦流量削锋日志 ...
- RabbitMQ 简单的消息发送与接收
RabbitMQ是建立在AMQP(Advanced Message Queuing Protocol,高级消息队列协议)基础上的,而AMQP是建立在TCP协议之上的. 因此,RabbitMQ是需要建立 ...
- RabbitMQ基础组件和SpringBoot整合RabbitMQ简单示例
交换器(Exchange) 交换器就像路由器,我们先是把消息发到交换器,然后交换器再根据绑定键(binding key)和生产者发送消息时的路由键routingKey, 按照交换类型Exchange ...
- PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (四) -- Push API 和 Pull API
RabbitMQ 中针对消息的分发提供了 Push API (订阅模式) 和 Pull API (主动获取) 两种模式. 在 PHP 中, 这两种模式分别通过 AMQPQueue 类中的 consum ...
- rabbitmq 简单示例(Hello World)
一:消息中间件: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 RabbitMQ是实现AMQP( ...
- RabbitMQ学习笔记(2)----RabbitMQ简单队列(Hello World)的使用
1. 简单队列结构图 2. 引入依赖 pom.xml文件 <dependency> <groupId>com.rabbitmq</groupId> <arti ...
随机推荐
- 20155318 2016-2017-2 《Java程序设计》第五周学习总结
20155318 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 try...catch 键盘输入利用java.util.Scanner,Scanner 名 ...
- 10.29训练赛第一场B题
题目大意:有n个队伍之间比赛,每两个队伍之间都有一场比赛,因此一共有n(n-1) / 2场比赛,但是这里丢失了一场比赛的记录,现在让你通过n(n-1) /2 -1场仍然存在的比赛记录来判断丢失的那条比 ...
- mybatis开发dao的方法——(三)
------------------------1. SqlSession使用范围------------------- 1.1 SqlSessionFactoryBuilder 通过S ...
- 善用backtrace解决大问题【转】
转自:https://www.2cto.com/kf/201107/97270.html 一.用途: 主要用于程序异常退出时寻找错误原因 二.功能: 回溯堆栈,简单的说就是可以列出当前函数调用关系 三 ...
- MVC 获取路由的 URL 参数值和默认值的集合。
跟aspx页面不一样 用Request 获取不到路由配置的 参数 可以采用下面方法获取 public ActionResult List() { //获取路由中所有的key foreach (stri ...
- 创蓝语音服务(语音通知验证码).net
public static string PostUrl = "http://zapi.253.com/msg/HttpBatchSendSM"; static void Main ...
- 解决阿里云安骑士漏洞警告:wordpress WPImageEditorImagick 指令注入漏洞
解决:wordpress WPImageEditorImagick 指令注入漏洞 前些天在阿里云服务器上安装了wordpress,阿里云提示有wordpress WP_Image_Editor_Ima ...
- 错误/异常:java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind;的解决方法
1.异常视图 2.解决方法 SocketException(JVM_Bind):套接口异常 说明:服务器端口号被占用 了 解决方法:点击 Window-->Preferences- ...
- Authentication(Spring Security 认证笔记)
这篇文章是对Spring Security的Authentication模块进行一个初步的概念了解,知道它是如何进行用户认证的 考虑一个大家比较熟悉的标准认证过程: 1.用户使用username和pa ...
- bzoj 1150
思路:写的时候感觉是贪心但是没有什么思路... 看了题解,原来有一个选了能反悔的贪心思路, 如果最优那么每个城市只能和旁边的相邻 城市连边,所以问题变成了由n个数,不能取相邻的两个数,取k个最小是多少 ...