我使用Spring云Spring服务连接器连接CloudFoundry上的Rabbitmq服务。
public class CloudConfig extends AbstractCloudConfig {
@Bean
public ConnectionFactory rabbitFactory()
{
return connectionFactory().rabbitConnectionFactory();
}
}
但我需要声明一个CachingConnectionFactory并将其PublisherConfirms设置为true。因为我们需要使用PublisherConfig在向队列发送消息时检查确认。我不知道如何注入从cloud spring服务连接器获得的connectionFactory。或者我们如何处理这种情况。
这是RabbitTemplate
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(connectionFactory);
template.setMandatory(true);
template.setMessageConverter(new Jackson2JsonMessageConverter());
template.setConfirmCallback((correlationData, ack, cause) -> {
if (!ack) {
System.out.println("send message failed: " + cause + correlationData.toString());
} else {
System.out.println("Publisher Confirm" + correlationData.toString());
}
});
return template;
}
这是spring云配置:
@Bean
public ConnectionFactory rabbitConnectionFactory() {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("publisherConfirms", true);
RabbitConnectionFactoryConfig rabbitConfig = new RabbitConnectionFactoryConfig(properties);
return connectionFactory().rabbitConnectionFactory(rabbitConfig);
}
当我使用此发件人发送消息时。结果是不期望的。
@Component
public class TestSender {
@Autowired
private RabbitTemplate rabbitTemplate;
@Scheduled(cron = "0/5 * * * * ? ")
public void send() {
System.out.println("===============================================================");
this.rabbitTemplate.convertAndSend(EXCHANGE, "routingkey", "hello world",
(Message m) -> {
m.getMessageProperties().setHeader("tenant", "aaaaa");
return m;
}, new CorrelationData(UUID.randomUUID().toString()));
Date date = new Date();
System.out.println("Sender Msg Successfully - " + date);
}
}
您可以按如下方式重新配置连接器创建的CCF:
@Bean
public SmartInitializingSingleton factoryConfigurer() {
return new SmartInitializingSingleton() {
@Autowired
private CachingConnectionFactory connectionFactory;
@Override
public void afterSingletonsInstantiated() {
this.connectionFactory.setPublisherConfirms(true);
}
};
}
在应用程序上下文完全初始化之前,必须确保不执行任何RabbitMQ操作(无论如何,这是最佳实践)。
该文档包括自定义连接器提供的连接细节的示例。
在你的情况下,你应该能够做这样的事情:
@Bean
public RabbitConnectionFactory rabbitFactory() {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("publisherConfirms", true);
RabbitConnectionFactoryConfig rabbitConfig = new RabbitConnectionFactoryConfig(properties);
return connectionFactory().rabbitConnectionFactory(rabbitConfig);
}
我让RabbitMQ在CloudFoundry中运行,并尝试从本地运行的配置服务器进行连接,下面是在应用程序中配置的内容。yml文件 抛出以下启动异常 下面是pom.xml的依赖关系 我可以使用应用程序中提供的信息连接到控制台。yml但不确定为什么会抛出TimeoutException,任何输入都会非常有用,
我在Windows10机器上尝试将RabbitMQ(3.6.11版本与Erlang 20一起安装)连接到ZipKin,但我得到了以下错误: 原因:org.springframework.beans.factory.unsatisfieddependencyException:创建名为“server configurator”的bean时出错,该bean在zipkin2.server.interna
编辑问题以包含所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我有一个nodejs客户端,它使用bramqp连接到RabbitMQ服务器。我的客户端可以连接到localhost中的Rabbit MQ服务器,运行良好。但它无法连接到另一台机器上的远程RabbitMQ服务器。我在远程服务器中打开了端口5672,因此我认为问题在于rabbitMQ服务器的配置。我如何解决这
我试图创建docker-撰写文件,将运行django apache服务器与芹菜任务,并使用Rabbitmq作为消息经纪。我的问题是芹菜不能连接到Rabbitmq。我得到了这个错误: [2021-02-18 08:11:44,769:错误/主进程]消费者:无法连接到amqp://客人:**@Rabbitmq: 5672//:[Errno 111]连接拒绝。 这也是我第一次创建docker图像,所以我
我刚刚编写了一个sprint引导应用程序来连接rabbitmq,并尝试发送一些测试消息,但连接被拒绝。Rabbitmq安装在docker中,该docker由命令<code>拉动。docker拉动Rabbitmq:3-management, 我用命令<;code>;docker run-d--hostname rabbit_test--name rabbitmq-p 15672:15672-p 56
我刚刚开始使用rabbitmq,我目前正在rabbitmq网站上的教程中工作。我使用本地机器作为服务器完成了hello world教程。现在我想连接到另一台机器上的远程服务器。我的问题是我需要使用什么主机名来连接到这个服务器。它是安装rabbitmq服务器的机器的ip地址吗。