
ru.tinkoff.gatling.amqp.protocol.AmqpProtocolBuilder.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gatling-amqp-plugin_2.13 Show documentation
Show all versions of gatling-amqp-plugin_2.13 Show documentation
Plugin for support performance testing with AMQP in Gatling
The newest version!
package ru.tinkoff.gatling.amqp.protocol
import com.rabbitmq.client.ConnectionFactory
import ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage
case class AmqpProtocolBuilder(
requestConnectionFactory: ConnectionFactory,
replyConnectionFactory: ConnectionFactory,
deliveryMode: DeliveryMode = NonPersistent(),
messageMatcher: AmqpMessageMatcher = MessageIdMessageMatcher,
consumerThreadsCount: Int = 1,
replyTimeout: Option[Long] = None,
responseTransformer: Option[AmqpProtocolMessage => AmqpProtocolMessage] = None,
initActions: AmqpChannelInitActions = Nil,
) {
def usePersistentDeliveryMode: AmqpProtocolBuilder = copy(deliveryMode = Persistent())
def useNonPersistentDeliveryMode: AmqpProtocolBuilder = copy(deliveryMode = NonPersistent())
def matchByMessageId: AmqpProtocolBuilder =
messageMatcher(MessageIdMessageMatcher)
def matchByCorrelationId: AmqpProtocolBuilder =
messageMatcher(CorrelationIdMessageMatcher)
def matchByMessage(extractId: AmqpProtocolMessage => String): AmqpProtocolBuilder =
messageMatcher(AmqpProtocolMessageMatcher(extractId))
def responseTransform(ext: AmqpProtocolMessage => AmqpProtocolMessage): AmqpProtocolBuilder =
copy(responseTransformer = Some(ext))
private def messageMatcher(matcher: AmqpMessageMatcher) =
copy(messageMatcher = matcher)
def replyTimeout(timeout: Long): AmqpProtocolBuilder = copy(replyTimeout = Some(timeout))
def consumerThreadsCount(threadCount: Int): AmqpProtocolBuilder = copy(consumerThreadsCount = threadCount)
def declare(q: AmqpQueue): AmqpProtocolBuilder = this.copy(initActions = this.initActions :+ QueueDeclare(q))
def declare(e: AmqpExchange): AmqpProtocolBuilder = this.copy(initActions = this.initActions :+ ExchangeDeclare(e))
def bindQueue(
q: AmqpQueue,
e: AmqpExchange,
routingKey: String,
args: Map[String, Any] = Map.empty,
): AmqpProtocolBuilder =
this.copy(initActions = this.initActions :+ BindQueue(q.name, e.name, routingKey, args))
def build: AmqpProtocol =
AmqpProtocol(
requestConnectionFactory,
replyConnectionFactory,
deliveryMode,
replyTimeout,
consumerThreadsCount,
messageMatcher,
responseTransformer,
initActions,
)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy