如何将 JmsTemplate 与 HTTP 代理一起使用

How to use JmsTemplate with HTTP proxy

我正在使用 Spring JmsTemplate 将消息发布到 Azure 服务总线主题。当 运行 在我公司的网络上时,我需要 JmsTemplate 来使用类似于 RestTemplateWebClient 的 HTTP 代理。我找不到任何关于如何做到这一点的好例子。有可能吗,如果可以的话能举个例子吗?

我找到了一种使用 HTTP 代理配置 JmsTemplate 的模式。如果有人有更好的模式请post在这里。

@SpringBootApplication
public class DemoApplication implements ApplicationRunner {
    @Autowired
    JmsTemplate jms;
    @Autowired
    ConnectionFactory connectionFactory;
    final String topicName = "myTopic";

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Supplier<ProxyHandler> supplier = () -> new HttpProxyHandler(new InetSocketAddress("my.proxy.com", 83));

        ((JmsConnectionFactory) connectionFactory).setExtension(JmsConnectionExtensions.PROXY_HANDLER_SUPPLIER.toString(), (conn, remote) -> supplier);
        jms.setConnectionFactory(connectionFactory);
        jms.convertAndSend(topicName, "Hello World");
        System.out.println("Published \"Hello World\"");
    }

    @JmsListener(destination = topicName, containerFactory = "topicJmsListenerContainerFactory", subscription = "mySub")
    public void receiveMessage(String message) {
        System.out.println("Received " + message);
    }
}