Java使用RabbitMQ(十)–常用操作以及注意事项

释放双眼,带上耳机,听听看~!

为了防止众所周知的身份信息用于生产环境的系统,guest只能用来访问本地。

channel可以主动关闭,但是这不是必须的,在关闭它所依赖的连接时,channel也会自动被关闭。

connection设计为长连接。

有个no wait 版本的队列


1
2
1channel.queueDeclareNoWait(queueName, true, false, false, null);
2

这种队列不接收rabbitmq的返回消息。效率更高,但是安全性低。只适合复杂拓扑结构的生产情景。依赖心跳机制发现错误操作。

删除队列


1
2
1channel.queueDelete("queue-name")
2

只删除空队列


1
2
1channel.queueDelete("queue-name", false, true)
2

只删除不被使用(没有消费者连接)的队列


1
2
1channel.queueDelete("queue-name", true, false)
2

清空一个队列


1
2
1channel.queuePurge("queue-name")
2

添加消息头


1
2
3
4
5
6
7
8
9
10
1Map<String, Object> headers = new HashMap<String, Object>();
2headers.put("latitude",  51.5252949);
3headers.put("longitude", -0.0905493);
4
5channel.basicPublish(exchangeName, routingKey,
6             new AMQP.BasicProperties.Builder()
7               .headers(headers)
8               .build()),
9               messageBodyBytes);
10

带过期时间的消息:


1
2
3
4
5
6
1channel.basicPublish(exchangeName, routingKey,
2             new AMQP.BasicProperties.Builder()
3               .expiration("60000")
4               .build()),
5               messageBodyBytes);
6

通道和并发注意事项

  • 避免在多个线程中共享通道,而是每个线程一个通道。
  • 通道中的一些操作可以并发执行,一些不行(比如可能会导致二次ack)
  • 为每一个publish创建一个channel也是不可取的,channel被设计为长连接,可以复用,创建太多影响性能。

给TA打赏
共{{data.count}}人
人已打赏
安全网络

CDN安全市场到2022年价值76.3亿美元

2018-2-1 18:02:50

安全漏洞

预警Drupal 目录遍历漏洞(CVE-2020-36193)

2021-2-26 11:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索