All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.nosqlbench.driver.jms.ops.JmsMsgReadMapper Maven / Gradle / Ivy

Go to download

A JMS driver for nosqlbench. This provides the ability to inject synthetic data into a pulsar system via JMS 2.0 compatibile APIs. NOTE: this is JMS compatible driver from DataStax that allows using a Pulsar cluster as the potential JMS Destination

There is a newer version: 4.15.97
Show newest version
package io.nosqlbench.driver.jms.ops;

import io.nosqlbench.driver.jms.JmsActivity;

import javax.jms.Destination;
import java.util.function.LongFunction;

/**
 * This maps a set of specifier functions to a pulsar operation. The pulsar operation contains
 * enough state to define a pulsar operation such that it can be executed, measured, and possibly
 * retried if needed.
 *
 * This function doesn't act *as* the operation. It merely maps the construction logic into
 * a simple functional type, given the component functions.
 *
 * For additional parameterization, the command template is also provided.
 */
public class JmsMsgReadMapper extends JmsOpMapper {

    private final LongFunction jmsConsumerDurableFunc;
    private final LongFunction jmsConsumerSharedFunc;
    private final LongFunction jmsMsgSubscriptionFunc;
    private final LongFunction jmsMsgReadSelectorFunc;
    private final LongFunction jmsMsgNoLocalFunc;
    private final LongFunction jmsReadTimeoutFunc;

    public JmsMsgReadMapper(JmsActivity jmsActivity,
                            LongFunction asyncApiFunc,
                            LongFunction jmsDestinationFunc,
                            LongFunction jmsConsumerDurableFunc,
                            LongFunction jmsConsumerSharedFunc,
                            LongFunction jmsMsgSubscriptionFunc,
                            LongFunction jmsMsgReadSelectorFunc,
                            LongFunction jmsMsgNoLocalFunc,
                            LongFunction jmsReadTimeoutFunc) {
        super(jmsActivity, asyncApiFunc, jmsDestinationFunc);

        this.jmsConsumerDurableFunc = jmsConsumerDurableFunc;
        this.jmsConsumerSharedFunc = jmsConsumerSharedFunc;
        this.jmsMsgSubscriptionFunc = jmsMsgSubscriptionFunc;
        this.jmsMsgReadSelectorFunc = jmsMsgReadSelectorFunc;
        this.jmsMsgNoLocalFunc = jmsMsgNoLocalFunc;
        this.jmsReadTimeoutFunc = jmsReadTimeoutFunc;
    }

    @Override
    public JmsOp apply(long value) {
        boolean asyncApi = asyncApiFunc.apply(value);
        Destination jmsDestination = jmsDestinationFunc.apply(value);
        boolean jmsConsumerDurable = jmsConsumerDurableFunc.apply(value);
        boolean jmsConsumerShared = jmsConsumerSharedFunc.apply(value);
        String jmsMsgSubscription = jmsMsgSubscriptionFunc.apply(value);
        String jmsMsgReadSelector = jmsMsgReadSelectorFunc.apply(value);
        boolean jmsMsgNoLocal = jmsMsgNoLocalFunc.apply(value);
        long jmsReadTimeout = jmsReadTimeoutFunc.apply(value);

        // Default to NO read timeout
        if (jmsReadTimeout < 0) jmsReadTimeout = 0;

        return new JmsMsgReadOp(
            jmsActivity,
            asyncApi,
            jmsDestination,
            jmsConsumerDurable,
            jmsConsumerShared,
            jmsMsgSubscription,
            jmsMsgReadSelector,
            jmsMsgNoLocal,
            jmsReadTimeout
        );
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy