如何将 JmsTemplate 与 HTTP 代理一起使用
How to use JmsTemplate with HTTP proxy
我正在使用 Spring JmsTemplate
将消息发布到 Azure 服务总线主题。当 运行 在我公司的网络上时,我需要 JmsTemplate
来使用类似于 RestTemplate
或 WebClient
的 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);
}
}
我正在使用 Spring JmsTemplate
将消息发布到 Azure 服务总线主题。当 运行 在我公司的网络上时,我需要 JmsTemplate
来使用类似于 RestTemplate
或 WebClient
的 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);
}
}