删除文章

确定要删除这篇文章吗?

取消
确定

qpid笔记

     阅读(455)  2018-12-14 18:57:09

查看所有队列包括消息的信息

# 查看指定队列信息
```qpid-stat -q | grep pingpong```

# 查看连接信息,连接数、时间、消息数等
```qpid-stat -b```

# 删除指定队列
```qpid-config del queue pingpong```  
如果队列不为空删除会失败,但是可以强制删除  
```qpid-config del queue --force pingpong```

# qpid-tool
主要用来监控qpidd  
用法:  

进入qpid tool工具

qpid-tool

查看帮助信息 qpid: help 列出所有可以查看的className qpid: list 列出所有队列 qpid: list queue 查看指定队列详细信息 qpid: show ID


# session.acknowledge
如果fetch到消息后没有调用session.acknowledge消息不会从队列中删除,下次从队列fetch消息的时候还会收到

# session.sync(true)
请求与服务端同步,这个操作会阻塞直到服务端确认所有挂起的操作(如:缓存中没有发送完成的数据)都已完成

# delete:always
Connection正常关闭(调用close)才能删除队列,否则不起作用。

# exchange
如果没有指定exchange会通过默认exchange(名字是空,类型是direct)来转发到队列,通过qpid-tool工具中的list exchange可以看到第一个就是默认的

# type为queue(direct模式)
点对点通信,一方发送一方接收,接收方不在时消息会保留在broker上。当sender的地址为ningto;{create:always, node:{type:queue}}时,qpid会创建一个名字为ningto的队列,同时receiver必须以相同的队列名才能收到消息且只一个receiver才能消费此消息。

# type为topic(topic模式)
订阅模式,一方发送多方接收,接收方不在时直接丢弃。当sender的地址为ningtotopic;{create:always, node: {type: topic}}时,qpid会创建一个名字为ningtotopic的exchange。  
发送消息到此exchange:    
1> 如果没有receiver消息将直接丢弃,这样不会造成消息堆积;  
2> 如果有一个receiver的地址为ningtotopic,那么说明它订阅了这个topic,此时会在queue上创建一个已ningtotopic为起始字符串的临时队列(如下所示,它是自动删除的),exchange会将消息路由一份到这个队列;  
3> 如果有多个receiver的地址为ningtotopic,将创建多个临时队列,同一个消息每个订阅者都会收到,订阅者收到的都是实时消息收不到历史消息;

ningtotopic_e29210bb-b44b-42b2-be3e-b4b535bec517 ```

文章评论

Keep it simple,stupid
文章数
292
总访问量
355972
今日访问
179
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部