All Apps and Add-ons

How to pass parameters into a custom JMS Modular Input Message Handler

mcormier_splunk
Splunk Employee
Splunk Employee

I'm working on a project to convert binary JMS message bodies to Strings. I've built the converter and will integrate it using the template you've laid out in Splunk Answers
https://answers.splunk.com/answers/310006/how-to-convert-byte-characters-coming-out-of-mq-th.html

I've run into a problem. The converter uses a properties file to describe the message format. How can I get the file path/name passed into this class so I can load the message format? I see the setParams (Map<String, String> params) method, but don't know
(a) if that's the right call and
(b) how to initialize a parameter that might get passed into this call in the first place.

Anyone have an example of how they've done this, how it might be done, or a pointer to documentation?

0 Karma
1 Solution

Damien_Dallimor
Ultra Champion

Config example :

alt text

Rough code example :

package com.splunk.modinput.jms.custom.handler;

import java.io.File;
import java.util.Map;

import javax.jms.Message;

import com.splunk.modinput.jms.AbstractMessageHandler;
import com.splunk.modinput.jms.JMSModularInput.MessageReceiver;

public class ExampleMessageHandler extends AbstractMessageHandler {

    private final static String MSG_FORMAT_FILE_PARAM = "msg_format_file";

    private File msgFormatFile;

    @Override
    public void handleMessage(Message message, MessageReceiver context) throws Exception {


        String event = decodeMessageBody(message);

        transportMessage(event, String.valueOf(System.currentTimeMillis()), "");

    }

    private String decodeMessageBody(Message message) {
        String result = "";
        try {

           //TODO your logic to pull out the message bytes and decode them

        } catch (Exception e) {}

        return result;

    }

    @Override
    public void setParams(Map<String, String> params) {

        if (params.containsKey(MSG_FORMAT_FILE_PARAM))
            this.msgFormatFile = new File(params.get(MSG_FORMAT_FILE_PARAM));

    }

}

View solution in original post

0 Karma

Damien_Dallimor
Ultra Champion

Config example :

alt text

Rough code example :

package com.splunk.modinput.jms.custom.handler;

import java.io.File;
import java.util.Map;

import javax.jms.Message;

import com.splunk.modinput.jms.AbstractMessageHandler;
import com.splunk.modinput.jms.JMSModularInput.MessageReceiver;

public class ExampleMessageHandler extends AbstractMessageHandler {

    private final static String MSG_FORMAT_FILE_PARAM = "msg_format_file";

    private File msgFormatFile;

    @Override
    public void handleMessage(Message message, MessageReceiver context) throws Exception {


        String event = decodeMessageBody(message);

        transportMessage(event, String.valueOf(System.currentTimeMillis()), "");

    }

    private String decodeMessageBody(Message message) {
        String result = "";
        try {

           //TODO your logic to pull out the message bytes and decode them

        } catch (Exception e) {}

        return result;

    }

    @Override
    public void setParams(Map<String, String> params) {

        if (params.containsKey(MSG_FORMAT_FILE_PARAM))
            this.msgFormatFile = new File(params.get(MSG_FORMAT_FILE_PARAM));

    }

}
0 Karma

mcormier_splunk
Splunk Employee
Splunk Employee

Thanks for this! I was hoping it would be straightforward to use setParams(), just didn't know the "config" side of the equation. I will test it out and report back.

0 Karma
Get Updates on the Splunk Community!

What's new in Splunk Cloud Platform 9.1.2312?

Hi Splunky people! We are excited to share the newest updates in Splunk Cloud Platform 9.1.2312! Analysts can ...

What’s New in Splunk Security Essentials 3.8.0?

Splunk Security Essentials (SSE) is an app that can amplify the power of your existing Splunk Cloud Platform, ...

Let’s Get You Certified – Vegas-Style at .conf24

Are you ready to level up your Splunk game? Then, let’s get you certified live at .conf24 – our annual user ...