みなさん、おはよう、
私は最近、spring-boot-artemis-starter に苦労しています。そのスプリングブートサポートについての私の理解は次のとおりです。
- 設定
spring.artemis.mode=embedded
し、tomcat のように、spring-boot は tcp (サーバー モード) を介して到達可能なブローカーをインスタンス化します。次のコマンドは成功するはずです。nc -zv localhost 61616
- setおよび spring-boot は、プロパティ (クライアント モード)
spring.artmis.mode=native
に従って jms テンプレートのみを構成します。spring.artemis.*
クライアント モードは、私のマシンのスタンドアロンの artemis サーバーで問題なく動作します。残念ながら、サーバー モードで tcp ポートに到達することはできませんでした。
誰かが組み込みモードの理解を確認してくれれば幸いです。
ツアーのお手伝いありがとう
掘り下げた後、spring-boot-starter-artemis によってすぐに提供される実装はorg.apache.activemq.artemis.core.remoting.impl.invm.InVMAcceptorFactory
アクセプターを使用することに気付きました。それが根本的な原因ではないかどうか疑問に思っています (繰り返しますが、私は決して専門家ではありません)。しかし、artemis の設定をカスタマイズする方法があるようです。したがって、私は運なしで次の構成を試しました:
@SpringBootApplication
public class MyBroker {
public static void main(String[] args) throws Exception {
SpringApplication.run(MyBroker.class, args);
}
@Autowired
private ArtemisProperties artemisProperties;
@Bean
public ArtemisConfigurationCustomizer artemisConfigurationCustomizer() {
return configuration -> {
try {
configuration.addAcceptorConfiguration("netty", "tcp://localhost:" + artemisProperties.getPort());
} catch (Exception e) {
throw new RuntimeException("Failed to add netty transport acceptor to artemis instance");
}
};
}
}