运行识别程序还需要安装VS20152019的redistribution包。
安装完成之后启动,会出现Authentication failed (rejected by the remote node), please check the Erlang cookie.
解决办法就是把.erlang.cookie文件从C:\Windows\system32\config\systemprofile\.erlang.cookie复制到C:\Users\James目录下解决。
安装完成之后,会出现管理页面打不开,需要安装管理插件:
rabbitmq-plugins enable rabbitmq_management
enable rabbitmq_management
然后:localhost:12576 用guest/guest登陆
一个connection是一个tcp连接, 一个channel是虚拟连接, channel可以有很多个, channel提交消息到broker, 背后相当于创建一个queue, 对于多线程来说, 最好一个线程一个channel. 在一个channel里面的请求被串行化了. channel是线程安全的.
consumer相当于回调函数, 当消息到来的时候, handleDelivery被调用, 当一个consumer被绑定到多个queue, 需要注意handleDelivery是由多个线程调用的. 注意同步.
用rabbitmqctl status可以产看rabbitmq版本
删除单个queue的所有消息用:
rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged
rabbitmq主端口为5672
rabbitmq 3.x之后默认的guest/guest不能连接远程的服务器, 需要创建新的用户名和密码,
$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"
rabbitmq管理控制台端口:
RabbitMQ Management console:
- PORT 15672 for RabbitMQ version 3.x
- PORT 55672 for RabbitMQ pre 3.x
远程不能登录的帖子, 强调一下用户必须具有administrator身份.
https://stackoverflow.com/questions/23669780/rabbitmq-3-3-1-can-not-login-with-guest-guest
Windows上rabbitmq服务器不工作, 可能是环境变量没有设置好, 要用administrator身份来安装, 安装完成之后需要check环境变量.
如果是服务启动, 启动停止命令为:
sbin>rabbitmq-service.bat start
sbin>rabbitmq-service.bat stop
列举用户:
rabbitmqctl.bat list_users
rabbitmq java发送对象需要定义MessageConverter这个bean:
@Bean
public MessageConverter jsonMessageConverter(){
return new Jackson2JsonMessageConverter();
}
然后设置到rabbitTemplate里面:
public AmqpTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(jsonMessageConverter());
return rabbitTemplate;
}
具体参看:
在.net的情况下, 发送对象, 如果用json, 需要json.net, 设置IBasicProperties, 里面有个属性:ContentType:
[Serializable]
IBasicProperties basicProperties = model.CreateBasicProperties();
basicProperties.SetPersistent(
true
);
basicProperties.ContentType =
"application/json"
;
细节请看:
https://dotnetcodr.com/2014/06/05/rabbitmq-in-net-data-serialisation/
讲rabbitmq文件位置的:
https://www.rabbitmq.com/relocate.html
如何在Windows server上安装rabbitmq:
https://oeskeide.com/2014/08/15/installing-rabbitmq-on-windows-server-3/
我们已经学会了如何确保即使消费者死亡,任务也不会丢失。但是,如果rabbitMQ服务器停止,我们的任务仍然会丢失。
当 RabbitmQ 退出或崩溃时,它会忘记队列和消息,除非您告诉它不要这样做。需要两件事情来确保消息不会丢失:我们需要将队列和消息标记为持久。
首先,我们需要确保 RabaMQ 永远不会丢失我们的队列。为此,我们需要将其声明为durable:
durable是rabbitmq范围的
persistent是message范围的
具体区别请看:
https://asafdav2.github.io/2017/rabbit-mq-persistentcy-vs-durability/
exclusive设为true的时候, 队列变为私有的, 只能被你的app消费, 如果想要限制一个队列只对一个consumer服务的话, 这个很有用. 如果当前的连接断开了, 这个队列就没有了.
一般exclusive和auto-delete一起用, 但是exclusive就够了.参看:
https://stackoverflow.com/questions/21248563/rabbitmq-difference-between-exclusive-and-auto-delete