Below I have a setup which is submitting an event to splunk. I would like to not recreate a connection and stream several events at a time. What can I do to achieve this? I attempted to use a socket below, but it always errors out with `<msg type="ERROR">Read Timeout</msg>`.
public class Main
{
static final ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws Exception
{
Map<String,Object> map = new HashMap<>();
{
map.put("host", System.getenv("SPLUNKHOST"));
map.put("username", System.getenv("USER"));
map.put("password", System.getenv("PASSWORD"));
}
Service.setSslSecurityProtocol(SSLSecurityProtocol.TLSv1_2);
final Service srv = Service.connect(map);
working(srv);
broken(srv);
}
static void working(Service srv) throws Exception {
final Receiver receiver = srv.getReceiver();
String str = mapper.writeValueAsString(data("rec_http"));
receiver.log("api_analytics", str);
}
static void broken(Service srv) throws Exception {
final Index index = srv.getIndexes().get("api_analytics");
final Socket sock = index.attach();
String str = mapper.writeValueAsString(data("sock"));
final OutputStream out = sock.getOutputStream();
final InputStream in = sock.getInputStream();
out.write(str.getBytes());
String r = new String(in.readAllBytes());
System.out.println(r);
sock.close();
}
static Object data(String src) {
Map<Object,Object> map = new HashMap<>();
map.put("index","api_analytics");
map.put("source",src);
return map;
}
}