RabbitMQ 使用demo
1.新建一个控制台应用程序:如图

2.代码如下:
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MQ
{
class Program
{
static void Main(string[] args)
{
string type = Console.ReadLine();
//生产者
if (type == "1")
{
ConnectionFactory factory = new ConnectionFactory();
factory.HostName = "192.168.2.24";
factory.UserName = "zhangweizhong";
factory.Password = "weizhong1988";
factory.VirtualHost = "orderqueue";
//注意host默认为5672
//factory.UserName = "admin";
//factory.Password = "123456";
//factory.VirtualHost = "adminhost";
//factory.Endpoint = new AmqpTcpEndpoint("localhost");
//默认端口
using (IConnection conn = factory.CreateConnection())
{
using (IModel channel = conn.CreateModel())
{
//在MQ上定义一个持久化队列,如果名称相同不会重复创建
channel.QueueDeclare("orderqueue", true, false, false, null);
while (true)
{
string message = string.Format("Message_{0}", Console.ReadLine());
byte[] buffer = Encoding.UTF8.GetBytes(message);
IBasicProperties properties = channel.CreateBasicProperties();
properties.DeliveryMode = 2;
channel.BasicPublish("", "orderqueue", properties, buffer);
Console.WriteLine("消息发送成功:" + message);
}
}
}
}
else
{
//消费者
ConnectionFactory factory = new ConnectionFactory();
factory.HostName = "192.168.2.24";
factory.UserName = "zhangweizhong";
factory.Password = "weizhong1988";
factory.VirtualHost = "orderqueue";
using (IConnection conn = factory.CreateConnection())
{
using (IModel channel = conn.CreateModel())
{
//在MQ上定义一个持久化队列,如果名称相同不会重复创建
channel.QueueDeclare("orderqueue", true, false, false, null);
//输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
channel.BasicQos(0, 1, false);
Console.WriteLine("Listening...");
//在队列上定义一个消费者
QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
//消费队列,并设置应答模式为程序主动应答
channel.BasicConsume("orderqueue", false, consumer);
while (true)
{
//阻塞函数,获取队列中的消息
BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
byte[] bytes = ea.Body;
string str = Encoding.UTF8.GetString(bytes);
Console.WriteLine("队列消息:" + str.ToString());
//回复确认
channel.BasicAck(ea.DeliveryTag, false);
}
}
}
}
}
}
}
踩过的坑:(备注)
1.RabbitMQ默认端口为:5672
2.引用的第三方组件:RabbitMQ.Client
需要了解RabbitMQ的安装部署可查阅本博客RabbitMQ安装篇章!!!
RabbitMQ 使用demo的更多相关文章
- RabbitMQ入门Demo
之前环境安装已经介绍过了,下面直接跑个Demo. 1.添加Maven依赖 <dependency> <groupId>org.springframework.amqp</ ...
- RabbitMQ 一个demo
Code: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...
- RabbitMQ学习之(四)_PHP操作RabbitMQ简单Demo
原理流程 生产者主要做的是:创建连接-->创建channel-->创建交换机对象-->发送消息 消费者主要做的是:创建连接-->创建channel-->创建交换机--&g ...
- rabbitmq python demo 参考链接地址
链接地址: https://docs.openstack.org/oslo.messaging/latest/reference/server.html https://www.cnblogs.com ...
- RabbitMQ~开篇与环境部署
想写这篇文章很久了,今天终于有时间总结一下,一个大型的系统里,消息中间件是必不可少的,它将并发环境处理的数据异步进行处理,有效的提高了系统的并发能力,有很多系统的瓶颈点都在于此,而消息中间件在这个时候 ...
- RabbitMQ知多少
1.引言 RabbitMQ--Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适.RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议 ...
- RabbitMQ使用介绍及实例
消息列队不做过多解释了,直接讲讲rabbitmq的基本概念和路由模式. 一.安装及基本概念 rabbitmq是基于erlang编写的,所以安装rabbitmq之前需要安装erlang的环境,配置环境变 ...
- 【RabbitMQ】如何进行消息可靠投递【上篇】
说明 前几天,突然发生线上报警,钉钉连发了好几条消息,一看是RabbitMQ相关的消息,心头一紧,难道翻车了? [橙色报警] 应用[xxx]在[08-15 16:36:04]发生[错误日志异常],al ...
- 【RabbitMQ】如何进行消息可靠投递【下篇】
说明 上一篇文章里,我们了解了如何保证消息被可靠投递到RabbitMQ的交换机中,但还有一些不完美的地方,试想一下,如果向RabbitMQ服务器发送一条消息,服务器确实也接收到了这条消息,于是给你返回 ...
随机推荐
- androidSD卡操作
1.获取SD卡目录:File file = Environment.getExternalStorageDirectory(); 2.获取SD卡路径:String path = Environment ...
- bzoj 4537 HNOI2016 最小公倍数
Description 给定一张N个顶点M条边的无向图(顶点编号为1,2,-,n),每条边上带有权值.所有权值都可以分解成2^a*3^b的形式.现在有q个询问,每次询问给定四个参数u.v.a和b,请你 ...
- openstack操作之一 命令行
在openstack环境中提供了多种操作虚拟机的方法,有最简单直接的dashborad界面,有不直观但高效的命令行,还有进阶版的postman调用openstack restfulapi和命令行中使用 ...
- axios配合vue+webpack使用
1.安装引用: cnpm install axios --save-dev 2.在组件中引入: import axios from 'axios'; 3.使用示例: 执行GET请求: // 为给定 I ...
- [编织消息框架][JAVA核心技术]动态代理应用3
我们先使用懒处理实现提取接口类上的元信息: public abstract class QRpcFactory { public static <T> T loadProxy(Class& ...
- KMP 算法 C++
#include <iostream>#include<string.h>#include<stdio.h>using namespace std; void Co ...
- lastIndex对正则结果的影响
前言 今天遇到一个问题,用正则表达式去检查同一个字符串时,交替返回true和false.无奈之下,重新翻了翻权威指南,发现罪魁祸首原来是lastIndex.可在控制台尝试下 let reg = /[\ ...
- Atlas 安装报错 package Atlas-2.2.1-1.x86_64 is intended for a x86_64 architecture
安装atlas 报错: package Atlas-2.2.1-1.x86_64 is intended for a x86_64 architecture 百度了好久没找到相关信息,最后看见官网文档 ...
- 巧用CSS居中未知高度的块元素
在网页中让一个未知高度的块元素水平垂直居中是一个老生常谈的问题,但是总是有些特殊场景让你无法得心应手的实现居中,本文介绍几种常用的经典的居中方法,总有一种适合你! 1. position .paren ...
- Python各类图像库的图片读写方式总结
最近在研究深度学习视觉相关的东西,经常需要写python代码搭建深度学习模型.比如写CNN模型相关代码时,我们需要借助python图像库来读取图像并进行一系列的图像处理工作.我最常用的图像库当然是op ...