2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MuleSoftAdvent Calendar 2019

Day 21

Anypoint MQのサーキットブレーカーで遊んでみる

Posted at

はじめに

引き続き極小ネタです。
今回はAnypoint MQのコネクタでサーキットブレーカーの動作を確認してみます。
特に意味はないです。たまたま思いついたことで、サクッと書けそうなネタということで。申し訳ないです。

サーキットブレーカーとは

この辺が分かり易いかと思います。
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/circuit-breaker

つまるところ、
「おっ、なにやら送信に失敗したな。」
(エラーが続く)
「う~ん、直らないな。向こうで何か起こってるるのかもしれない。一旦停止しよう。」
(ちょっと待つ)
「そろそろ元に戻ったかもしれない。1回だけ送ってみるか」
「う~ん、やっぱり失敗するな。もう少し様子を見るか。」
(ちょっと待つ)
「そろそろどうかな。もう1回!おっ、送信できた!」
「復活したようだから、じゃんじゃん送るよ!」
といったような、無駄にエラーを続かせないために、ちょっと人間味のあるリトライをしてくれるよ、という機能かともやっと解釈しました。

Anypoint MQのサーキットブレーカーで遊んでみる

では、Anypoint MQのサーキットブレーカーを触ってみようと思います。

コネクタの説明はこの辺に呼んでくださいませ。
https://docs.mulesoft.com/jp/connectors/anypoint-mq/anypoint-mq-listener#%E3%82%B5%E3%83%BC%E3%82%AD%E3%83%83%E3%83%88%E3%83%96%E3%83%AC%E3%83%BC%E3%82%AB

まずは、こんな感じのPub/Subのサブスクライバのフローを作成します。
フロー.JPG
何をしているかというと、単純に最初の5回はエラーとして、6回目以降は正常に完了するだけのフローです。

Subscrberのプロパティ > Advancedは以下のように設定しました。
プロパティ.JPG
「TEST:TEST」というタイプのエラーが3回続いたら、1分待ちます、といった感じです。

では、動かしてみます。
test1~3というメッセージをキューに配置して、このサブスクライバのフローの動作をさせた結果のログです。

*******************************************************************************************************
*            - - + APPLICATION + - -            *       - - + DOMAIN + - -       * - - + STATUS + - - *
*******************************************************************************************************
* demo_publisher                                * default                        * DEPLOYED           *
* demo_subscriber1                              * default                        * DEPLOYED           *
*******************************************************************************************************

INFO  2019-12-21 11:15:51,434 [[MuleRuntime].cpuLight.02: [demo_publisher].demopublisherFlow.CPU_LITE @3d5dfcd8] [event: cb60e420-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: start publisher [test1]
INFO  2019-12-21 11:15:51,936 [[MuleRuntime].cpuLight.02: [demo_publisher].demopublisherFlow.CPU_LITE @3d5dfcd8] [event: cb60e420-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: end publisher [test1]
ERROR 2019-12-21 11:15:52,499 [[MuleRuntime].io.02: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: cfaeba71-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : An error occurred.
Error type            : TEST:TEST
Element               : demosubscriber1Flow/processors/1/route/1/processors/1 @ demo_subscriber1:demosubscriber1.xml:27 (Raise error)
Element XML           : <raise-error doc:name="Raise error" doc:id="90e5046c-ffa0-4410-a64f-6bd972887ce1" type="TEST:TEST"></raise-error>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

ERROR 2019-12-21 11:15:52,936 [[MuleRuntime].io.01: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: d036fd40-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : An error occurred.
Error type            : TEST:TEST
Element               : demosubscriber1Flow/processors/1/route/1/processors/1 @ demo_subscriber1:demosubscriber1.xml:27 (Raise error)
Element XML           : <raise-error doc:name="Raise error" doc:id="90e5046c-ffa0-4410-a64f-6bd972887ce1" type="TEST:TEST"></raise-error>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

ERROR 2019-12-21 11:15:53,126 [[MuleRuntime].io.02: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: d05cfbd0-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : An error occurred.
Error type            : TEST:TEST
Element               : demosubscriber1Flow/processors/1/route/1/processors/1 @ demo_subscriber1:demosubscriber1.xml:27 (Raise error)
Element XML           : <raise-error doc:name="Raise error" doc:id="90e5046c-ffa0-4410-a64f-6bd972887ce1" type="TEST:TEST"></raise-error>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

INFO  2019-12-21 11:15:55,787 [[MuleRuntime].cpuLight.02: [demo_publisher].demopublisherFlow.CPU_LITE @3d5dfcd8] [event: d1f68790-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: start publisher [test2]
INFO  2019-12-21 11:15:56,176 [[MuleRuntime].cpuLight.02: [demo_publisher].demopublisherFlow.CPU_LITE @3d5dfcd8] [event: d1f68790-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: end publisher [test2]
INFO  2019-12-21 11:15:58,903 [[MuleRuntime].cpuLight.02: [demo_publisher].demopublisherFlow.CPU_LITE @3d5dfcd8] [event: d3d1fe50-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: start publisher [test3]
INFO  2019-12-21 11:15:59,055 [[MuleRuntime].cpuLight.02: [demo_publisher].demopublisherFlow.CPU_LITE @3d5dfcd8] [event: d3d1fe50-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: end publisher [test3]
ERROR 2019-12-21 11:16:53,609 [[MuleRuntime].io.03: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: f46c17e0-2397-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : An error occurred.
Error type            : TEST:TEST
Element               : demosubscriber1Flow/processors/1/route/1/processors/1 @ demo_subscriber1:demosubscriber1.xml:27 (Raise error)
Element XML           : <raise-error doc:name="Raise error" doc:id="90e5046c-ffa0-4410-a64f-6bd972887ce1" type="TEST:TEST"></raise-error>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

ERROR 2019-12-21 11:17:59,466 [[MuleRuntime].io.01: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: 1bad12f0-2398-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : An error occurred.
Error type            : TEST:TEST
Element               : demosubscriber1Flow/processors/1/route/1/processors/1 @ demo_subscriber1:demosubscriber1.xml:27 (Raise error)
Element XML           : <raise-error doc:name="Raise error" doc:id="90e5046c-ffa0-4410-a64f-6bd972887ce1" type="TEST:TEST"></raise-error>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

INFO  2019-12-21 11:19:03,603 [[MuleRuntime].io.03: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: 41e6b020-2398-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: demo_subscriber_1 [test2]
INFO  2019-12-21 11:19:03,979 [[MuleRuntime].io.01: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: 4221bd50-2398-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: demo_subscriber_1 [test3]
INFO  2019-12-21 11:19:04,126 [[MuleRuntime].io.01: [demo_subscriber1].demosubscriber1Flow.BLOCKING @787776b6] [event: 42382b80-2398-11ea-a607-7470fd71e47b] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: demo_subscriber_1 [test1]
INFO  2019-12-21 11:19:14,704 [qtp1053539698-33] com.mulesoft.agent.services.AgentStudioManagementService: Received request to stop runtime

最初に3回、立て続けにエラーとなった後、1分毎に2回処理がエラーとなり、さらに1分後、3件のメッセージが正常に処理されることが確認できます。

最後に

プロパティをちょろちょろと設定するだけで、簡単にこういった機能が実装できてしまうのはうれしいですね。

では

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?