如何使用 Spring 云流绑定器优先发送消息
How to send a message with priority with Spring cloud stream binder
我正在使用 rabbitmq。我已经定义了一个queue优先级,但是当我必须发送一个具有优先级的消息时,我不知道如何在上面指定优先级。
这是我的代码
StreamProcessor.java
public interface StreamProcessor {
public static final String TEST_JOB_OUTPUT = "test-job-output";
@Output(StreamProcessor.TEST_JOB_OUTPUT)
MessageChannel testJobOutput();
}
MessageSender.java
@Autowired
@Qualifier(StreamProcessor.TEST_JOB_OUTPUT)
private MessageChannel testJobOutput;
public void sendMessage(String s, MessagePriority priority) {
testJobOutput.send(MessageBuilder.withPayload(s).build());
}
我尝试在邮件中指定 header、"x-priority",但似乎不起作用。
public void sendMessage(String s, MessagePriority priority) {
testJobOutput.send(MessageBuilder.withPayload(s).setHeader("x-priority", 10).build());
}
通过尝试和失败找到解决方案...它是 优先级 而不是 x-优先级
public class MessageSender {
public static final String MESSAGE_HEADER_PRIORITY = "priority";
@Autowired
@Qualifier(StreamProcessor.TEST_JOB_OUTPUT)
private MessageChannel testJobOutput;
public void sendMessage(String s, MessagePriority priority) {
testJobOutput.send(MessageBuilder.withPayload(s).setHeader(MESSAGE_HEADER_PRIORITY, priority.value()).build());
}
}
我正在使用 rabbitmq。我已经定义了一个queue优先级,但是当我必须发送一个具有优先级的消息时,我不知道如何在上面指定优先级。
这是我的代码
StreamProcessor.java
public interface StreamProcessor {
public static final String TEST_JOB_OUTPUT = "test-job-output";
@Output(StreamProcessor.TEST_JOB_OUTPUT)
MessageChannel testJobOutput();
}
MessageSender.java
@Autowired
@Qualifier(StreamProcessor.TEST_JOB_OUTPUT)
private MessageChannel testJobOutput;
public void sendMessage(String s, MessagePriority priority) {
testJobOutput.send(MessageBuilder.withPayload(s).build());
}
我尝试在邮件中指定 header、"x-priority",但似乎不起作用。
public void sendMessage(String s, MessagePriority priority) {
testJobOutput.send(MessageBuilder.withPayload(s).setHeader("x-priority", 10).build());
}
通过尝试和失败找到解决方案...它是 优先级 而不是 x-优先级
public class MessageSender {
public static final String MESSAGE_HEADER_PRIORITY = "priority";
@Autowired
@Qualifier(StreamProcessor.TEST_JOB_OUTPUT)
private MessageChannel testJobOutput;
public void sendMessage(String s, MessagePriority priority) {
testJobOutput.send(MessageBuilder.withPayload(s).setHeader(MESSAGE_HEADER_PRIORITY, priority.value()).build());
}
}