我有一个非常标准的设置JMS- Spring Boot和ActiveMQ.它工作正常,直到我尝试进行简单的集成测试.经过一些调查后,我发现在第一个JMS消息被消耗后,Spring上下文和嵌入式代理都被关闭,无论消费过程中是什么,都会触发另一个事件.经纪人问题我能够通过useShutdownHook=false在测试设置中添加连接选项来解决,即
spring.activemq.broker-url = vm://broker?async=false&broker.persistent=false&broker.useShutdownHook=false
Run Code Online (Sandbox Code Playgroud)
我正在寻找的基本上是一种强制测试"保持活力"的方法,直到消耗掉所有JMS消息(在这种情况下它们只是两个).我理解整个设置的异步性质,但是在测试期间,生成和使用这些消息的所有结果会很有帮助.
下面是我的设置,虽然它很简单.
@EnableJms
public class ActiveMqConfig {
@Bean
public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
jmsTemplate.setMessageConverter(messageConverter);
return jmsTemplate;
}
@Bean
public MessageConverter messageConverter() {
MappingJackson2MessageConverter messageConverter = new MappingJackson2MessageConverter();
messageConverter.setTargetType(MessageType.TEXT);
messageConverter.setTypeIdPropertyName("_type");
return messageConverter;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个消息驱动的POJO,它监听给定的事件:
@JmsListener(destination = "events")
public void applicationSubmitted(MyType event) {
// do some work with the event here
jmsTemplate.convertAndSend("commands", mymessage);
}
Run Code Online (Sandbox Code Playgroud)
还有一个:
@JmsListener(destination = "commands")
public void onCommand(TextMessage …Run Code Online (Sandbox Code Playgroud) 假设我们有两个微服务:客户端和服务器。微服务架构最基本的特性之一是能够为每个微服务拥有单独的管道,这意味着我们必须能够将它们独立地部署到生产环境中。
这意味着不同的微服务可能由不同的团队开发,并且某些功能在一个微服务上的开发速度比在另一个上快。这通常以客户端和服务器之间的合同(接口)被破坏而告终,因此客户端发送到服务器的 JSON 不再有效。
问题是如何防止两个微服务之间的通信由于它们之间的合同破裂而中断的情况?处理此类问题的最佳策略是什么?
当启动从官方网站下载的Keycloak demo v3.2.1.Final时,我收到以下错误:
22:56:46,404 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
22:56:46,590 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
22:56:46,675 INFO [org.jboss.as] (MSC service thread 1-6) WFLYSRV0049: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) starting
22:56:47,309 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:131)
at org.jboss.as.server.ServerService.boot(ServerService.java:356)
at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:299)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.xml.stream.XMLStreamException: WFLYCTL0083: Failed to load module org.keycloak.keycloak-server-subsystem
at org.jboss.as.controller.parsing.ExtensionXml.parseExtensions(ExtensionXml.java:155)
at org.jboss.as.server.parsing.StandaloneXml$DefaultExtensionHandler.parseExtensions(StandaloneXml.java:126)
at org.jboss.as.server.parsing.StandaloneXml_4.readServerElement(StandaloneXml_4.java:218)
at org.jboss.as.server.parsing.StandaloneXml_4.readElement(StandaloneXml_4.java:141)
at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:103)
at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:49) …Run Code Online (Sandbox Code Playgroud)