---
schema_version: "1"
id: 3045833a9542dbc6253226fd914dd6aa61ec412c31260ebb5cd6129393954733
title: 内部ハンドラーバッファ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/runtime-manager/internal-handler-buffering.md
canonical_url: https://docs.mulesoft.com/jp/runtime-manager/internal-handler-buffering
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 00ec18a52ee5c4b74218b39f19d0f279dd552ea845dda1ce4f8536adf846e77c
description: MuleSoft Documentation Site
latest: true
---
# 内部ハンドラーバッファ

 [![logo server active](/mulesoft/current/ja-jp/_/img/icons/server-cloud.svg "Anypoint Platform PCE")Private Cloud Edition](deployment-strategies#anypoint-platform-private-cloud-edition)

Anypoint Runtime Manager エージェントでは、バッファをサポートする内部ハンドラーを簡単な方法で実装できます。このドキュメントでは、Runtime Manager エージェントの内部ハンドラーのバッファを実装し、設定する方法について説明します。

## [](#バッファ付き内部ハンドラーの実装)バッファ付き内部ハンドラーの実装

### [](#bufferedhandler-抽象クラス)BufferedHandler 抽象クラス

バッファ付き内部ハンドラーを実装するには、​`BufferedHandler<T>`​ 抽象クラスを拡張する必要があります。上書きするメソッドは次のとおりです。

- `boolean canHandle(T message)`
    
    メッセージが内部ハンドラーによって処理可能であれば true を返します。
- `boolean flush(Collection<T> collectionOfMessages)`
    
    バッファに保存されているメッセージを外部サービスに送信する実装を提供します。

### [](#例)例

```java
@Named("com.mulesoft.agent.mypublisher")
@Singleton
public class MyPublisher extends BufferedHandler<List<Metric>>
{
    @Configurable(value = "mule")
    String metricPrefix;

    @Inject
    public MyPublisher()
    {
        super();
    }

    public MyPublisher(OnOffSwitch enabledSwitch)
    {
        super();
        this.enabledSwitch = enabledSwitch;
    }

    @Override
    public boolean canHandle(@NotNull List<Metric> metrics)
    {
        // Evaluates if the message could be handled
    }

    @Override
    public boolean flush(@NotNull Collection<List<Metric>> listOfMetrics)
    {
        // Send messages to external service
    }
}
```

## [](#内部ハンドラーのバッファの設定)内部ハンドラーのバッファの設定

### [](#バッファ設定オブジェクト)バッファ設定オブジェクト

内部ハンドラーにバッファサポートが含まれる場合は、​`mule-agent.yml`​ ファイル内でバッファを設定できます。次の表は、使用可能な設定パラメーターを示しています。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 34%;">
<col style="width: 33%;">
<col style="width: 33%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">項目</th>
<th class="tableblock halign-left valign-top">説明</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>type</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">バッファ種別。有効な値は、​<code>MEMORY</code>​ (メモリ) または ​<code>DISK</code>​ (ディスク) です。</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>retryCount</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">フラッシュメソッドで例外が発生した後に再試行する回数。</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>maximumCapacity</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">バッファに保持するイベントの最大数。</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>flushFrequency</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">フラッシュメソッドを実行する頻度 (ミリ秒)。</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>filePath</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">バッファファイルへのパス。種別が ​<code>DISK</code>​ (ディスク) のバッファにのみ有効です。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>PATH/bufferFile</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>whenExhausted</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">バッファが枯渇したときに従う戦略。指定しない場合、バッファは自動的に拡張されます。有効な値は、​<code>FAIL</code>​ (失敗) と ​<code>FLUSH.</code>​ (フラッシュ) です。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>flushThreadsNumber</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>whenExhausted</code>​ で定義した戦略が ​<code>FLUSH</code>​ (フラッシュ) (上記参照) である場合に、バッファが枯渇したときに FlushThreadExecutor によって使用されるスレッド数。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>60</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>discardMessagesOnFlushFailure</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">true の場合、フラッシュが成功しなかったときにはメッセージがバッファに返されません。</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
</tr>
</tbody>
</table>

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="paragraph">
<p>バッファの最大容量は、バイト数ではなくイベント数に基づいて設定されます。イベントのサイズが大きく、​<code>maximumCapacity</code>​ を低い値に設定していない場合は、ヒープに負荷がかかり、アプリケーションのパフォーマンスに影響する可能性があります。</p>
</div>
</td>
</tr>
</tbody></table>

`DISK`​ (ディスク) バッファを設定した場合は、I/O 操作のパフォーマンスを改善するために、メモリ内バッファもインスタンス化されます。デフォルトでは、メモリバッファのイベント数は 10000 で、500 ミリ秒ごとにディスクにフラッシュし、各バッチには 10000 件のイベントが含まれます。これらの値は、それぞれシステムプロパティ ​`agent.disk.buffering.cache.size`​、​`agent.disk.buffering.cache.flush.frequency`​、​`agent.disk.buffering.max.flushing.size`​ で設定できます。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">ディスクから外部システムへの 10000 件ずつのバッチのフラッシュと、​<code>agent.disk.buffering.max.flushing.size</code>​ プロパティは、Mule エージェントプラグインの 2.1.9 および 1.11.3 以降でサポートされています。</td></tr></tbody></table>

### [](#サンプルの-mule-agent-yml-ファイル)サンプルの ​`mule-agent.yml`​ ファイル

#### [](#パブリッシャーでのバッファの設定)パブリッシャーでのバッファの設定

```yaml
---
muleInstanceUniqueId: validId
organizationId: organizationId

transports:
    websocket.transport:
        security:
            keyStorePassword: mykeystorePassword
            keyStoreAlias: agent
            keyStoreAliasPassword: agentpassword

    rest.agent.transport:
        security:
            keyStorePassword: mykeystorePassword
            keyStoreAlias: agent
            keyStoreAliasPassword: agentpassword
        port: 9997

services:
    mule.agent.application.service:
        enabled: true

    mule.agent.domain.service:
        enabled: true

    mule.agent.jmx.publisher.service:
        enabled: true
        frequency: 15
        frequencyTimeUnit: MINUTES
        beans:
            -   beanQueryPattern: java.lang:type=Runtime
                attribute: Uptime
                monitorMessage: Monitoring memory up-time
            -   beanQueryPattern: java.lang:type=MemoryPool,*
                attribute: Usage.used
                monitorMessage" : Used Memory

internalHandlers:
    domaindeploymentnotification.internal.message.handler:
        enabled: true

    applicationdeploymentnotification.internal.message.handler:
        enabled: false

    com.mulesoft.agent.test.buffering.jmx.internal.handler:
        enabled: true
        buffer:
            type: DISK
            retryCount: 1
            flushFrequency: 10000
            maximumCapacity: 30
            filePath: publisher-buffer.log

externalHandlers:
    applications.request.handler:
        enabled: true

    domains.request.handler:
        enabled: true
```

#### [](#イベント追跡でのバッファの設定)イベント追跡でのバッファの設定

```yaml
---
muleInstanceUniqueId: validId
organizationId: organizationId

transports:
    websocket.transport:
        security:
            keyStorePassword: mykeystorePassword
            keyStoreAlias: agent
            keyStoreAliasPassword: agentpassword

    rest.agent.transport:
        security:
            keyStorePassword: mykeystorePassword
            keyStoreAlias: agent
            keyStoreAliasPassword: agentpassword
        port: 9997

services:
    mule.agent.application.service:
        enabled: true

    mule.agent.domain.service:
        enabled: true

    mule.agent.jmx.publisher.service:
        enabled: true
        frequency: 15
        frequencyTimeUnit: MINUTES
        beans:
            -   beanQueryPattern: java.lang:type=Runtime
                attribute: Uptime
                monitorMessage: Monitoring memory up-time
            -   beanQueryPattern: java.lang:type=MemoryPool,*
                attribute: Usage.used
                monitorMessage" : Used Memory

internalHandlers:
    domaindeploymentnotification.internal.message.handler:
        enabled: true

    applicationdeploymentnotification.internal.message.handler:
        enabled: false

    tracking.notification.internal.message.handler:
        enabled: true
        buffer:
            type: MEMORY
            retryCount: 1
            flushFrequency: 10000
            maximumCapacity: 30

externalHandlers:
    applications.request.handler:
        enabled: true

    domains.request.handler:
        enabled: true
```