ハンドラーで例外が発生した場合、メッセージはヘッダーで定義されたエラーチャネルにルーティングできません

トニーTc:

2つIntegrationFlowのは次のように定義されています。

@Bean
public IntegrationFlow myFlow() {
    return IntegrationFlows.from("input.channel")
            .handle("myService", "handle")
            .get();
}

@Bean
public IntegrationFlow exceptionFlow() {
    return IntegrationFlows.from("error.channel")
            .handle(m -> System.out.println(m.getHeaders()))
            .get();
}

MyServiceの `handle1メソッドのハンドラは、メッセージを出力して例外をスローするだけです。

public class MyService {
    public String handle(String s) {
        System.out.println(s);
        throw new RuntimeException("error");
    }
}

テストでは、エラーチャネル値が正確に定義されたメッセージがerror.channelinput.channel channel, and it is expected to route to theerror.channel`チャネルに入れられます。

@Test
public void myTest() {
    Message<String> m = MessageBuilder.withPayload("foo").setHeader(MessageHeaders.ERROR_CHANNEL, "error.channel").build();
    this.someInputChannel.send(m);
}

ただし、テストで例外がスローされ、メッセージはエラーチャネルにルーティングされません。

アルテム・ビラン:

これは正しい動作です。errorChannelスレッド実行部が存在する場合にのみヘッダが参照されます。例外はプレーンJavaで行われるため、呼び出し元にスローされます。以下の場合QueueChannelExecutorChannelがあるMessagePublishingErrorHandlerにタスクの呼び出しをラップしているtry..catchと、送信ErrorMessageerrorChannelヘッダ。

あなたの場合、それはthis.someInputChannel.send(m);それを使った単純なJava呼び出しなので、このメインスレッドで直接例外を受け取ります。

詳細については、リファレンスマニュアルをご覧くださいhttps : //docs.spring.io/spring-integration/docs/current/reference/html/#namespace-errorhandler

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ハンドラーのディスパッチに失敗しました。ネストされた例外はjava.lang.AbstractMethodErrorです:WASでのみエラーが発生し、Spring埋め込みTomcatではエラーが発生しません

分類Dev

コルーチンがasyncioで例外を発生させた場合、ループをシャットダウンしてエラーを出力する方法は?

分類Dev

オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

分類Dev

ランタイム例外がプログラムで発生した場合、トランザクションはロールバックされません

分類Dev

Azureボットチャネルエラー「このメッセージをボットに送信するときにエラーが発生しました:HTTPステータスコードが許可されていません」

分類Dev

Chrome拡張機能のネイティブメッセージングでエラーが発生しました:「指定されたネイティブメッセージングホストが見つかりません。」

分類Dev

ngビルドメッセージ「未定義のプロパティ 'toLowerCase'を読み取れませんでエラーが発生しました」

分類Dev

すべてのコルーチンがすでにCouroutineExceptionHandlerでラップされている場合に、「ジョブがキャンセルされた」例外が発生した場所を特定するにはどうすればよいですか?

分類Dev

Windows 10をシャットダウンできません。特定の場合に起動すると、グラフィカルエラーが発生します。

分類Dev

ゲートウェイを介してsystemd-networkdでルーティングを構成すると、エラーが発生します:ルートを設定できませんでした:ネットワークに到達できません

分類Dev

式:値で初期化されたイテレータをインクリメントできません(デバッグではエラーが発生しますが、リリースモードではエラーが発生しません-Visual Studio)

分類Dev

エラーが発生した行を取得する方法:クライアントに送信された後にヘッダーを設定できませんか?

分類Dev

移行をロールバックできません。StandardError:エラーが発生し、それ以降の移行はすべてキャンセルされました

分類Dev

アーカイブに失敗しました。エラーメッセージ:「パッケージングプロセス中にエラーが発生したため、アーカイブファイルを作成できませんでした」

分類Dev

vuejs動的コンポーネントがv-bind:isのエラーをスローします。エラーはプロパティまたはメソッドです...インスタンスで定義されていませんが、レンダリング中に参照されます

分類Dev

カスタムメッセージハンドラチュートリアルでデモを試行中にJIRAエラーが発生しました

分類Dev

「未定義のプロパティ「呼び出し」を読み取れません。要素のチェック中に例外が発生しました。「ルール」メソッドをチェックしてください」というエラーを修正するにはどうすればよいですか?

分類Dev

systemd-networkdと非ネットワークアドレスの宛先を使用してルーティングを構成すると、エラーが発生します:ルートを設定できませんでした:引数が無効です

分類Dev

discord.jsを使用してdiscordボットをコーディングしましたが、commndハンドラーで「プロパティ 'セット'の未定義を読み取れません」というエラーが発生します

分類Dev

kubernetesダッシュボードエラー: 'メトリッククライアントヘルスチェックに失敗しました:サーバーは要求されたリソースを見つけることができませんでした(サービスヒープスターを取得します)。

分類Dev

WebSocket:WebSocketハンドシェイク中にエラーが発生しました:空ではない「Sec-WebSocket-Protocol」ヘッダーが送信されましたが、応答が受信されませんでした

分類Dev

エラーPaypalサンドボックス:リクエストは中止されました:SSL / TLSのセキュリティで保護されたチャネルを作成できませんでした

分類Dev

非トランザクションメソッドまたはコントローラーで例外がキャッチされた場合でも、Springトランザクションメソッドはロールバックを取得します

分類Dev

C ++ラムダ:ラムダで静的メソッドにアクセスするとエラーが発生します 'これはこのラムダ関数ではキャプチャされませんでした'

分類Dev

Meteor.bindEnvironment内のサーバーでエラーが発生した場合、クライアントでMeteor.Errorをキャッチできません

分類Dev

odoo v8でエラーが発生した場合、メールを送信してメッセージエラーを発生させる

分類Dev

ヘルパーディレクトリで定義されたメソッドは、コントローラーでアクセスできますか?

分類Dev

vue.jsでエラーに直面している "プロパティまたはメソッド" step1_category "はインスタンスで定義されていませんが、レンダリング中に参照されています

分類Dev

Ubuntuのインストールで、「ディスクドライブの/のチェック中に重大なエラーが見つかりました」というメッセージが表示され、問題が発生しました。

Related 関連記事

  1. 1

    ハンドラーのディスパッチに失敗しました。ネストされた例外はjava.lang.AbstractMethodErrorです:WASでのみエラーが発生し、Spring埋め込みTomcatではエラーが発生しません

  2. 2

    コルーチンがasyncioで例外を発生させた場合、ループをシャットダウンしてエラーを出力する方法は?

  3. 3

    オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

  4. 4

    ランタイム例外がプログラムで発生した場合、トランザクションはロールバックされません

  5. 5

    Azureボットチャネルエラー「このメッセージをボットに送信するときにエラーが発生しました:HTTPステータスコードが許可されていません」

  6. 6

    Chrome拡張機能のネイティブメッセージングでエラーが発生しました:「指定されたネイティブメッセージングホストが見つかりません。」

  7. 7

    ngビルドメッセージ「未定義のプロパティ 'toLowerCase'を読み取れませんでエラーが発生しました」

  8. 8

    すべてのコルーチンがすでにCouroutineExceptionHandlerでラップされている場合に、「ジョブがキャンセルされた」例外が発生した場所を特定するにはどうすればよいですか?

  9. 9

    Windows 10をシャットダウンできません。特定の場合に起動すると、グラフィカルエラーが発生します。

  10. 10

    ゲートウェイを介してsystemd-networkdでルーティングを構成すると、エラーが発生します:ルートを設定できませんでした:ネットワークに到達できません

  11. 11

    式:値で初期化されたイテレータをインクリメントできません(デバッグではエラーが発生しますが、リリースモードではエラーが発生しません-Visual Studio)

  12. 12

    エラーが発生した行を取得する方法:クライアントに送信された後にヘッダーを設定できませんか?

  13. 13

    移行をロールバックできません。StandardError:エラーが発生し、それ以降の移行はすべてキャンセルされました

  14. 14

    アーカイブに失敗しました。エラーメッセージ:「パッケージングプロセス中にエラーが発生したため、アーカイブファイルを作成できませんでした」

  15. 15

    vuejs動的コンポーネントがv-bind:isのエラーをスローします。エラーはプロパティまたはメソッドです...インスタンスで定義されていませんが、レンダリング中に参照されます

  16. 16

    カスタムメッセージハンドラチュートリアルでデモを試行中にJIRAエラーが発生しました

  17. 17

    「未定義のプロパティ「呼び出し」を読み取れません。要素のチェック中に例外が発生しました。「ルール」メソッドをチェックしてください」というエラーを修正するにはどうすればよいですか?

  18. 18

    systemd-networkdと非ネットワークアドレスの宛先を使用してルーティングを構成すると、エラーが発生します:ルートを設定できませんでした:引数が無効です

  19. 19

    discord.jsを使用してdiscordボットをコーディングしましたが、commndハンドラーで「プロパティ 'セット'の未定義を読み取れません」というエラーが発生します

  20. 20

    kubernetesダッシュボードエラー: 'メトリッククライアントヘルスチェックに失敗しました:サーバーは要求されたリソースを見つけることができませんでした(サービスヒープスターを取得します)。

  21. 21

    WebSocket:WebSocketハンドシェイク中にエラーが発生しました:空ではない「Sec-WebSocket-Protocol」ヘッダーが送信されましたが、応答が受信されませんでした

  22. 22

    エラーPaypalサンドボックス:リクエストは中止されました:SSL / TLSのセキュリティで保護されたチャネルを作成できませんでした

  23. 23

    非トランザクションメソッドまたはコントローラーで例外がキャッチされた場合でも、Springトランザクションメソッドはロールバックを取得します

  24. 24

    C ++ラムダ:ラムダで静的メソッドにアクセスするとエラーが発生します 'これはこのラムダ関数ではキャプチャされませんでした'

  25. 25

    Meteor.bindEnvironment内のサーバーでエラーが発生した場合、クライアントでMeteor.Errorをキャッチできません

  26. 26

    odoo v8でエラーが発生した場合、メールを送信してメッセージエラーを発生させる

  27. 27

    ヘルパーディレクトリで定義されたメソッドは、コントローラーでアクセスできますか?

  28. 28

    vue.jsでエラーに直面している "プロパティまたはメソッド" step1_category "はインスタンスで定義されていませんが、レンダリング中に参照されています

  29. 29

    Ubuntuのインストールで、「ディスクドライブの/のチェック中に重大なエラーが見つかりました」というメッセージが表示され、問題が発生しました。

ホットタグ

アーカイブ