Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerAnypoint Runtime Manager エージェントでは、バッファをサポートする内部ハンドラーを簡単な方法で実装できます。このドキュメントでは、Runtime Manager エージェントの内部ハンドラーのバッファを実装し、設定する方法について説明します。
バッファ付き内部ハンドラーを実装するには、BufferedHandler<T>
抽象クラスを拡張する必要があります。上書きするメソッドは次のとおりです。
boolean canHandle(T message)
メッセージが内部ハンドラーによって処理可能であれば true を返します。
boolean flush(Collection<T> collectionOfMessages)
バッファに保存されているメッセージを外部サービスに送信する実装を提供します。
@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
ファイル内でバッファを設定できます。次の表は、使用可能な設定パラメーターを示しています。
項目 | 説明 | デフォルト値 |
---|---|---|
|
バッファ種別。有効な値は、 |
|
|
フラッシュメソッドで例外が発生した後に再試行する回数。 |
|
|
バッファに保持するイベントの最大数。 |
|
|
フラッシュメソッドを実行する頻度 (ミリ秒)。 |
|
|
バッファファイルへのパス。種別が |
|
|
バッファが枯渇したときに従う戦略。指定しない場合、バッファは自動的に拡張されます。有効な値は、 |
なし |
|
|
|
|
true の場合、フラッシュが成功しなかったときにはメッセージがバッファに返されません。 |
|
バッファの最大容量は、バイト数ではなくイベント数に基づいて設定されます。イベントのサイズが大きく、 |
DISK
(ディスク) バッファを設定した場合は、I/O 操作のパフォーマンスを改善するために、メモリ内バッファもインスタンス化されます。デフォルトでは、メモリバッファのイベント数は 10000 で、500 ミリ秒ごとにディスクにフラッシュし、各バッチには 10000 件のイベントが含まれます。これらの値は、それぞれシステムプロパティ agent.disk.buffering.cache.size
、agent.disk.buffering.cache.flush.frequency
、agent.disk.buffering.max.flushing.size
で設定できます。
ディスクから外部システムへの 10000 件ずつのバッチのフラッシュと、agent.disk.buffering.max.flushing.size プロパティは、Mule エージェントプラグインの 2.1.9 および 1.11.3 以降でサポートされています。
|
mule-agent.yml
ファイル---
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
---
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