rabbitmq / rabbitmq-stomp

RabbitMQ STOMP plugin
https://www.rabbitmq.com/stomp.html
Other
49 stars 28 forks source link

x-death header missing in STOMP response #143

Closed onlybytes closed 4 years ago

onlybytes commented 4 years ago

Hi,

I am conecting to RabbitMQ on port 61613 (for SSL 61614). During frame handling, i am NACKing messages and are routed to dead letter exchange.

While examining the messages from DLX, i noticed that x-death header is missing. However the following headers are available: x-first-death-exchange x-first-death-queue x-first-death-reason

x-death header contains useful information but unfortunately that is not available in STOMP headers.

I tried Spring (ReactorNettyTcpStompClient) and Apache Camel (Stomp Component) stomp clinets for testing the DLX behavior. The behaviour is the same - x-death header is missing in the list of available headers.

Note: I logged into RabbitMQ management page and verified the message. I can see x-death header there along with other headers. But it is not available when we are processing the message in stomp clients.

Looks like a bug to me. Please let me know a way to get the x-death header while processing the messages from DLX

Thanks, Strive

michaelklishin commented 4 years ago

Thank you for your time.

Team RabbitMQ uses GitHub issues for specific actionable items engineers can work on. GitHub issues are not used for questions, investigations, root cause analysis, discussions of potential issues, etc (as defined by this team).

We get at least a dozen of questions through various venues every single day, often light on details. At that rate GitHub issues can very quickly turn into a something impossible to navigate and make sense of even for our team. Because GitHub is a tool our team uses heavily nearly every day, the signal/noise ratio of issues is something we care about a lot.

Please post this to rabbitmq-users.

Thank you.

michaelklishin commented 4 years ago

This is not a bug.

The header is not present because it is a collection of maps and it's not obvious how to represent these given the "single key-value pair" structure of STOMP headers.

As you can see, the very first dead lettering event is exposed. This is usually the most important piece of information. If you have specific actionable ideas as to how the entire chain of events can be represented in STOMP, please post your suggestions to the mailing list and they will be considered.

x_death_1_queue: …
x_death_1_reason: …
x_death_2_queue: …
x_death_2_reason: …

is one possible format but I find it ugly and so far, there simply isn't enough demand for such feature.

onlybytes commented 4 years ago

Hi, I was thinking just one more parameter would have been very helpful. The count parameter. Say something like x-retry-count.

I will post the question to rabbitmq-users. I am sorry for posting the question in wrong place.

Thanks, Strive