12

みなさん、おはよう、

私は最近、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");
            }
        };
    }

}
4

3 に答える 3

2

組み込みモードは、ブローカーをアプリケーションの一部として開始します。このようなセットアップで使用できるネットワーク プロトコルはありません。InVM 呼び出しのみが許可されます。自動構成により、調整できる必要な部分が公開されますが、組み込みモードで実際に TCP/IP チャネルを使用できるかどうかはわかりません。

于 2016-09-30T12:38:38.957 に答える