排名
1
文章
877
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

使用NuGet下载rabbitmq客户端工具
Install-Package RabbitMQ.Client -Version 3.6.5
生产消息
- static void Main(string[] args)
- {
- //1:创建一个连接的工厂类 Port= 5672(端口号)
- ConnectionFactory connectionFactory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest", Port = 5672 };
- //创建连接
- using (var conn = connectionFactory.CreateConnection())
- {
- //创建通道
- using (var channel = conn.CreateModel())
- {
- //创建一个交换机
- channel.ExchangeDeclare("MYExchange", "direct");
-
- //创建一个队列
- channel.QueueDeclare("AJ", false, false, false, null);
-
- //把交换机和队列进行关联
- channel.QueueBind("AJ", "MYExchange", "routing_key");
-
- //生产消息(循环生产3条)
- for (int i = 1; i <= 3; i++)
- {
- byte[] bytes = Encoding.UTF8.GetBytes("iphone" + i);
- channel.BasicPublish("MYExchange", "routing_key", null, bytes);
- }
-
- }
- }
- Console.WriteLine("消息生产完成");
- Console.ReadLine();
- }
注意默认的连接端口是5672,默认的web工具端口是15672不要搞混了,如果使用15672用代码去连接是不行的
几个步骤基本上对应网页的几个
消息生产成功后就能看到,我们创建的交换机
以及队列
以及队列里边存放的消息条数
当然交换机和队列,不需要每次添加消息的时候都创建,创建一次后面只添加消息就行了
消息消费(及时接收)
通过事件关联的方式,当有消息进来的时候可以及时的消费掉
- public class ArticleRedisMQ
- {
- public void GetMsg()
- {
- //连接配置(类似连接字符串)
- ConnectionFactory rabbitFactory = new ConnectionFactory() { HostName = "127.0.0.1", UserName = "guest", Password = "guest", Port = 5672 };
-
- //打开连接
- using (IConnection conn = rabbitFactory.CreateConnection())
- {
- //获取一个通道
- using (IModel channel = conn.CreateModel())
- {
- //获取客户端的关联
- EventingBasicConsumer custom = new EventingBasicConsumer(channel);
-
- //绑定一个接收事件(及时接收消息)
- custom.Received += Custom_Received;
-
- //开始接收消息(自动应答为false,获取消息后不会自动删除,自己控制消息是否删除)
- channel.BasicConsume("topic.justin.queue", noAck: false, consumer: custom);
-
- Console.WriteLine("按任意值,退出程序");
- Console.ReadKey();
- }
- }
-
- }
-
- private void Custom_Received(object sender, BasicDeliverEventArgs e)
- {
- var msgBody = e.Body;
- string msg = Encoding.UTF8.GetString(msgBody);
- Console.WriteLine(msg);
- }
- }
手动确认:
首先自定应答设置成false: noAck:fasle
- //开始接收消息(自动应答为false,获取消息后不会自动删除,自己控制消息是否删除)
- channel.BasicConsume("RRedis", noAck: false, consumer: custom);
然后手动调用方法BasicAck完成应答
- //处理完成,告诉Broker可以服务端可以删除消息,分配新的消息过来
- channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价