8009}]}]}]. loopback_users:设置只能在与RabbitMq服务同一台机器*问服务的用户

时间:2022-01-05 05:12:19

1、什么是RabbitMQ。详见 。

感化就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源的操纵,放入行列队伍,再由此外一个线程,去异步措置惩罚惩罚这些行列队伍,可极大的提高系统的并发能力。

2、安置

RabbitMQ处事:。
    (安置完RabbitMQ处事后,会在Windows处事中看到。如果没有Erlang运行环境,在安置过程中会提醒先安置Erlang环境。)

.net客户端类库:

3、插件

RabbitMQ供给了很多好用的插件,最常用的就是web打点工具,启动此插件。

CMD中运行命令:rabbitmq-plugins enable rabbitmq_management

注:rabbitmq-plugins 地址路径为:D:\Program Files\RabbitMQ Server\rabbitmq_server-3.4.0\sbin

web打点工具的地点是::15672,初始用户名:guest 初始暗码:guest

4、配置

配置文件地点为:C:\Documents and Settings\Administrator\Application Data\RabbitMQ\rabbitmq.config,默认没有rabbit.config文件,需要手工新建(默认会有rabbitmq.config.example 作为参考)。基于安适,做了两个配置,如下:

[ {rabbit, [ {loopback_users, [<<"guest">>]}, {tcp_listeners, [{"127.0.0.1", 1234}, {"10.121.1.48", 8009}]} ]} ].

loopback_users:设置只能在与RabbitMq处事同一台机器*谒处事的用户。

tcp_listeners:设置RabbitMQ监听的IP地点与端口。只监听局域网内网iP、改削默认端口,防备被入侵打击。

设置完后,别忘记了以下操纵,否则配置不起感化。

遏制RabbitMQ处事;

从头安置处事使配置生效:rabbitmq-service.bat install

此命令要切换到路径:D:\Program Files\RabbitMQ Server\rabbitmq_server-3.4.0\sbin

启动RabbitMQ处事;

5、Demo操练。

动静出产者: class Program { static void Main(string[] args) { try { ConnectionFactory factory = new ConnectionFactory(); factory.HostName = Constants.MqHost; factory.Port = Constants.MqPort; factory.UserName = Constants.MqUserName; factory.Password = Constants.MqPwd; using (IConnection conn = factory.CreateConnection()) { using (IModel channel = conn.CreateModel()) { //在MQ上界说一个长期化行列队伍,如果名称不异不会反复创建 channel.QueueDeclare("MyFirstQueue", true, false, false, null); while (true) { string customStr = Console.ReadLine(); RequestMsg requestMsg = new RequestMsg(); requestMsg.Name = string.Format("Name_{0}", customStr); requestMsg.Code = string.Format("Code_{0}", customStr); string jsonStr = JsonConvert.SerializeObject(requestMsg); byte[] bytes = Encoding.UTF8.GetBytes(jsonStr); //设置动静长期化 IBasicProperties properties = channel.CreateBasicProperties(); properties.DeliveryMode = 2; channel.BasicPublish("", "MyFirstQueue", properties, bytes); //channel.BasicPublish("", "MyFirstQueue", null, bytes); Console.WriteLine("动静已发送:" + requestMsg.ToString()); } } } } catch (Exception e1) { Console.WriteLine(e1.ToString()); } Console.ReadLine(); } }

class Program { static void Main(string[] args) { try { ConnectionFactory factory = new ConnectionFactory(); factory.HostName = Constants.MqHost; factory.Port = Constants.MqPort; factory.UserName = Constants.MqUserName; factory.Password = Constants.MqPwd; using (IConnection conn = factory.CreateConnection()) { using (IModel channel = conn.CreateModel()) { //在MQ上界说一个长期化行列队伍,如果名称不异不会反复创建 channel.QueueDeclare("MyFirstQueue", true, false, false, null); //输入1,,那如果接收一个动静,但是没有应答,则客户端不会收到下一个动静 channel.BasicQos(0, 1, false); Console.WriteLine("Listening..."); //在行列队伍上界说一个消费者 QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel); //消费行列队伍,并设置应答模式为措施主动应答 channel.BasicConsume("MyFirstQueue", false, consumer); while (true) { //梗阻函数,获取行列队伍中的动静 BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); byte[] bytes = ea.Body; string str = Encoding.UTF8.GetString(bytes); RequestMsg msg = JsonConvert.DeserializeObject<RequestMsg>(str); Console.WriteLine("HandleMsg:" + msg.ToString()); //答复确认 channel.BasicAck(ea.DeliveryTag, false); } } } } catch (Exception e1) { Console.WriteLine(e1.ToString()); } Console.ReadLine(); } }

8009}]}]}]. loopback_users:设置只能在与RabbitMq服务同一台机器*问服务的用户

8009}]}]}]. loopback_users:设置只能在与RabbitMq服务同一台机器*问服务的用户