当前位置: 首页 > 知识库问答 >
问题:

如果为消息设置了STOMP“expires”标头,则该消息将立即过期,而无需等待标头中设置的过期期

施学
2023-03-14
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", "30000");
headers.set("priority", 9);

上面的配置是为了让消息在30秒内不过期。但是消息在到达队列后立即过期。侦听器甚至不接收消息。

共有1个答案

欧阳安晏
2023-03-14

Expires标头指示消息过期的绝对时间(例如,类似于JMS消息的JMSExpires标头),而不是消息过期的延迟。请尝试以下操作:

StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", System.currentTimeMillis() + 30000);
headers.set("priority", 9);

当您将Expires设置为30000时,它会告诉代理消息在很久以前过期,因此它不会将消息传递给客户机。

顺便说一下,我删除了持久标头,因为它在ActiveMQ Artemis中不做任何事情。

 类似资料:
  • 在HttpServletResponse接口中定义了若干设置HTTP响应消息头的方法,如addHeader方法可以添加响应消息头字段;addIntHeader方法可以添加整数值的响应消息头字段;setContextType方法可以设置Context-Type字段值。 HTTP响应消息头是由若干key-value对组成的,其中key表示字段名,value表示字段值,中间用冒号(:)分隔。如下面的内容

  • 我对cxf soap头有问题。我使用Contract-firs开发方法建立了一个cxf项目。我想调用带有cxf组件的web服务,如下所示。 我想发送一个pojo消息,抛出一个直接组件作为对ws的请求。我的路线如下所示: 我需要实现这样一个soap头: 为了将其归档,我编写了一个这样的处理器(另请参见http://camel.apache.org/cxf.html): 不幸的是,我在这条语句中得到了

  • 我通过SpringJMS在我的项目中使用MQ,作为代理我使用ActiveMQ。我需要基于消息设置过期,所以我尝试使用,但没有成功。所有到达ActiveMQ的消息都具有expiration=0。 有人成功地使用Spring为每个消息设置过期吗?

  • 当你在操作本系统时,系统会根据你操作的类型在下方弹出一些操作提示和异常,警告等信息,如下图,你可以根据需要控制这些信息是否显示。

  • 我已经使用Eclipse微配置文件发射器在Quarkus应用程序中创建了一个ActiveMQ Artemis生成器。但是消息会立即过期,并被移到中。我不确定这种行为。请建议如何将消息保存到队列中,以便它仅在指定时间后过期。 我正在使用下面的代码。