对不起.我又加了一些内容。我在Spring中测试了两个消息队列(rabbitmq、amazon sqs),如下所示。
我的目的是逻辑处理用户电子邮件到队列发送注册完成电子邮件时,用户完成注册无一例外。
//rabbit mq configuration.class
@Bean
public ConnectionFactory rabbitConnectionFactory() {
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("localhost",5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
return connectionFactory;
}
@Bean
public SimpleMessageListenerContainer messageListenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(rabbitConnectionFactory());
container.setQueueNames(queue);
container.setMessageListener(exampleListener());
container.setTransactionManager(platformTransactionManager);
container.setChannelTransacted(true);
return container;
}
@Bean
public RabbitTemplate producerRabbitTemplate() {
RabbitTemplate rabbitTemplate = new RabbitTemplate(rabbitConnectionFactory());
rabbitTemplate.setQueue(queue);
rabbitTemplate.setMandatory(true);
rabbitTemplate.isChannelTransacted();
rabbitTemplate.setChannelTransacted(true);
return rabbitTemplate;
}
//UserService.class
@Autowired
private final UserRepository userRepository;
@Autowired
private final RabbitTemplate rabbitTemplate;
@Transactional
public User createUser(final User user){
rabbitTemplate.convertAndSend("spring-boot", user.getEmail()); // SignUp Completion email
final User user = userRepository.save(user);
if(true) throw new RuntimeException();
return user;
}
但是,上面的逻辑发生RuntimeException。
//amazon sqs configuration.class
@Bean
public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSqs) {
//UserService.class
@Autowired
private final UserRepository userRepository;
@Autowired
private QueueMessagingTemplate messagingTemplate;
@Transactional
public User createUser(final User user){
messagingTemplate.convertAndSend("spring-boot", user.getEmail()); // SignUp Completion email
final User user = userRepository.save(user);
if(true) throw new RuntimeException();
return user;
}
有人知道这是为什么吗?
我如何解决这个问题?
不要试图为此使用事务,想出一些方法来使系统最终保持一致。
听起来像是要像执行事务一样执行'Queue.SendMessage'和'Repository.Save'-要么都提交,要么都不提交。问题是“transaction”实际上并不是事务性的,即使在rabbit示例中也是如此。
@Transactional
public User createUser(final User user){
messagingTemplate.convertAndSend("spring-boot", user.getEmail());
final User user = userRepository.save(user);
return user;
}
我刚刚开始使用AWS EC2。我明白EC2就像一台远程计算机,在那里我可以做几乎所有我想做的事情。然后我发现了ECS的事。我知道它使用Docker,但我对这两者之间的关系感到困惑。 ECS只是EC2中的Docker安装吗?如果我已经有一个EC2并且我启动了一个ECS,这是否意味着我有两个实例?
我有一个用例,其中将有数据流到来,而我不能以相同的速度消耗它,并且需要一个缓冲区。这可以使用SNS-SQS队列来解决。我知道Kinesis解决了同样的目的,那么有什么区别呢?为什么我应该喜欢(或者不应该喜欢)Kinesis?
我正在为web集成amazon pay SDK python。 我已经阅读了亚马逊支付的所有留档,但是我不知道如何在前端/后端代码中给出或创建按钮签名。这是我的前端代码,用于创建亚马逊支付一次性结账按钮。 如果有人实现了这一点,请给出您有价值的答案...
亚马逊云 图 1.20.2.1 - AWS AWS,即 Amazon Web Services,是亚马逊(Amazon)公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务,使用户几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT
亚马逊SNS支持windows桌面的通知吗? 我是推送通知服务的新手。我想在我的项目中启用推送通知。我在搜索并了解到亚马逊社交网站可以向Windows Mobile和iOS mobiles发送推送通知。但我也想在我的web应用程序中启用通知功能。
下面是我的php实现代码: 这是用于生成Amazon Pay按钮的JS实现代码。