Java Bloomberg API - 如何在没有服务的情况下生成请求

时间:2013-01-18 20:47:50

标签: java bloomberg

我正在使用Bloomberg API来获取数据。目前,我有3个流程按照开发人员指南以典型方式获取数据。类似的东西:

Service refDataService = session.getService("//blp/refdata");
Request request = refDataService.createRequest("ReferenceDataRequest");
request.append("securities", "IBM US Equity");
request.append("fields", "PX_LAST");
cid = session.sendRequest(request, null);

有效。现在我想将逻辑扩展为更像更新队列的东西。我希望每个进程将其请求发送到更新队列进程,而进程又负责创建会话和服务,然后发送请求。但是,我没有看到任何方法在没有服务的情况下创建请求。此外,由于请求类型(referenceData,历史数据,日内刻度)变化多端且具有不同的属性,因此创建更新队列可以读取的容器对象并非易事。

关于如何实现这一目标的任何想法?我的最终目标是建立一个进程(我正在调用更新队列),该进程接收请求列表,删除任何重复项,然后以30秒的间隔向Bloomberg发送数据。

谢谢!

1 个答案:

答案 0 :(得分:1)

我更新了jBloomberg库以包含刻度数据。您可以向充当队列的BloombergSession提交不同类型的查询。因此,如果您想提交不同类型的请求,您可以编写如下内容:

RequestBuilder<IntradayTickData> tickRequest =
    new IntradayTickRequestBuilder("SPX Index",
        DateTime.now().minusHours(2),
        DateTime.now());

RequestBuilder<IntradayBarData> barRequest =
    new IntradayBarRequestBuilder("SPX Index",
        DateTime.now().minusHours(2),
        DateTime.now())
        .period(5, TimeUnit.MINUTES);

RequestBuilder<ReferenceData> refRequest =
    new ReferenceRequestBuilder("SPX Index", "NAME");

Future<IntradayTickData> ticks = session.submit(tickRequest);
Future<IntradayBarData> bars = session.submit(barRequest);
Future<ReferenceData> name = session.submit(refRequest);

the javadoc中提供了更多示例。

如果您需要定期获取相同的信息,您可以重复使用构建器,并将其与ScheduledThreadPoolExecutor结合使用。

注意:库仍处于测试状态,因此请勿在自动交易的黑匣子中盲目使用!