文章标题 原创 翻译 转载 文章内容 # 查看所有队列包括消息的信息 ``` qpid-stat -q ``` # 查看指定队列信息 ``` 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 ``` 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交