Docker 部署RabbitMq,Asp.Net Core使用RabbitMQ示例。

1 篇文章 0 订阅
1 篇文章 0 订阅

一、Docker安装RabbitMq

1、查询镜像:

	docker search rabbitmq

查询结果

2、拉取镜像:docker pull rabbitmq

	docker pull rabbitmq 
	docker images 查看结果

查询结果

3、运行镜像为容器

	docker run -d --name rabbit -p 15672:15672 -p 5672:5672 <imageName>
	-d 后台运行,
	---name 容器的名称
	-p web管理器端口
	-p 队列服务器端口
	也可以传递命令同时设定账号密码以及权限,也可以在web管理器中设置。

在这里插入图片描述

4、进入容器,并且启动Rabbitmq

	dockers exec -it <容器id> bash
	-it 交互进入,bash命令行
	
	rabbitmq-plugins enable rabbitmq_management

5、访问web管理界面

	http://1.15.78.132:15672    
	如果第三步没有设置账号密码,则默认账号密码:guest

rabbitmq 管理界面

Asp.net Core 使用Rabbitmq

1、生产消息

Console.WriteLine("生产端");
IConnectionFactory factory = RabbitMqConnectionFactory.CreateConnectionFactory(Configuration["你的服务器"],Configuration["端口"],Configuration["用户名"],Configuration["密码"]);
IConnection con = factory.CreateConnection();//创建连接对象
IModel channel = con.CreateModel();//创建连接会话对象
string queueName = "QueueName";
//声明一个队列.
channel.QueueDeclare(
  queue: queueName,//消息队列名称
  durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
  exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
  autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
  arguments: null //设置队列的一些其它参数
);
string message = string.Empty;
do
{
    message = Console.ReadLine() ?? "";
    //消息内容
    byte[] body = Encoding.UTF8.GetBytes(message);
    //发送消息
    channel.BasicPublish("", queueName, null, body);
} 
while (message.Trim().ToLower() != "exit");
con.Close();
channel.Close();

2、消费者

Console.WriteLine("接收端");
IConnectionFactory factory = RabbitMqConnectionFactory.CreateConnectionFactory(Configuration["你的服务器"],Configuration["端口"],Configuration["用户名"],Configuration["密码"]);
IConnection conn = factory.CreateConnection();
IModel channel = conn.CreateModel();
string queueName = "QueueName";
//声明一个队列
channel.QueueDeclare(
  queue: queueName,//消息队列名称
  durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
  exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
  autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
  arguments: null 设置队列的一些其它参数
   );
//创建消费者对象
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
    byte[] message = ea.Body.ToArray();//接收到的消息
    Console.WriteLine("接收消息:" + Encoding.UTF8.GetString(message));
};
//消费者开启监听
channel.BasicConsume("QueueName", true, consumer);
Console.ReadKey();
channel.Dispose();
conn.Close();

3、复用部分

	public class RabbitMqConnectionFactory
    {
        /// <summary>
        /// 创建链接工厂对象
        /// </summary>
        /// <param name="hostName">服务器地址</param>
        /// <param name="port">端口号</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        public static IConnectionFactory CreateConnectionFactory(string hostName,int port,string userName,string password)
        {
            IConnectionFactory factory = new ConnectionFactory()//创建连接工厂对象
            {
                HostName = hostName,
                Port = port,
                UserName = userName,
                Password = password
            };
            return factory;
        }
    }

4、测试

生产消息不消费,通过管理器查看队列消息

在这里插入图片描述
生产端、消费端同时运行,查看结果。
在这里插入图片描述

三 、Rabbitmq更多模式,请自行上网学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值