如何使用 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());
    }

}