我在Apache Camel 2.17.0 中使用QuickFIX/J版本 1.6.4并且我收到会话消息。这不是错误,但在我的情况下,它会导致无意的Logoff。Disconnecting: Encountered END_OF_STREAM
什么情况会导致此消息,我如何分析我的案例中的哪种情况是原因?
当我通过 initiator.start() 方法使用 SSL 将启动器连接到 FIX 服务器时,它会启动一个单独的线程来建立连接。现在,当此失败(例如由于 SSL 握手问题或服务器连接问题)时,错误将被抛出到日志中,但似乎无法被捕获在代码中并进行管理。当错误发生时如何检测/捕获?
Disconnecting: Socket exception (<server ip>): java.net.SocketException: Connection reset.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪的底部是线程池执行器。
我在 start 方法周围有一个 try-catch,但是当异常发生在另一个线程中时,它无法捕获它。
订单请求在 FIX 服务器上发送,并且标签的顺序已更改。
如果我想要序列的输出,因为它是由我安排的(而不是被服务器修改)。
public void send50(Order order) {
quickfix.fix50sp1.NewOrderSingle newOrderSingle = new quickfix.fix50sp1.NewOrderSingle(new ClOrdID(order.getID()),
sideToFIXSide(order.getSide()), new TransactTime(), typeToFIXType(order.getType()));
newOrderSingle.set(new OrderQty(order.getQuantity()));
newOrderSingle.set(new Symbol(order.getSymbol()));
newOrderSingle.set(new Price(order.getSharePrice()));
newOrderSingle.set(new Account("13501100"));
newOrderSingle.setField(new NoPartyIDs(1));
newOrderSingle.setField(new PartyIDSource('C'));
newOrderSingle.setField(new PartyRole(12));
newOrderSingle.setField(new PartyID("13501100"));**
Run Code Online (Sandbox Code Playgroud)
这是用户给服务器的顺序,服务器将其安排为:
8=FIXT.1.1|9=173|35=D|34=5|49=135|52=20200131-05:35:12.956|56=PSE|1=13501100|11=1580448912440|38=10=10 1|44=10.78|54=1|55=AGI|59=0|60=20200131-13:35:12.956|447=C|448=13501100|452=12|453=1|10=213|
那么,如果我希望输出与发送的顺序相同,该怎么办?
我正在开发使用 FIX 协议和 quickfixj 框架连接到金融市场的解决方案。具体来说,我正在实现一个发起者,我需要连接到接受者,指定用户名和密码。关于如何将 Logon 消息中的这些字段传递给服务器,quickfixj 文档在这方面不是很清楚。
经过我发现它是放在函数toAdmin中的,我在这个函数中放入了以下代码:
@Override
public void toAdmin(Message message, SessionID sessionId) {
Session.lookupSession(sessionId).setTargetDefaultApplicationVersionID(new ApplVerID("9"));
final Message.Header header = message.getHeader();
try {
if ( header.getField(new BooleanField(MsgType.FIELD)).equals(MsgType.LOGON) ) {
message.setField(new StringField(Username.FIELD, "user"));
message.setField( new StringField(Password.FIELD, "pass"));
System.out.println(">>> " + message.toRawString());
}
} catch (FieldNotFound e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
但是我仍然无法执行登录过程,并且在尝试登录时它会向我显示下一个日志。
<20190313-14:44:33, FIXT.1.1:aaa->bbb, outgoing> (8=FIXT.1.1 9=74 35=A 34=1 49=aaa 52=20190313-14:44:33.431 56=bbb 98=0 108=30 1137=9 10=131 )
<20190313-14:44:33, FIXT.1.1:aaa->bbb, event> (Initiated logon request)
<20190313-14:44:33, …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将 quickfix 窗口的内容写入具有特定格式的文件的方法,最好采用易于编写脚本的方式。
我想要实现的是 Vim 和 ipdb 的轻量级集成:
nmap <leader>s :call setqflist([], 'a', {'items': [{'filename': @%, 'lnum':line('.'), 'text':'break'}]}).pdbrc使用break file_path:line_number格式将快速修复的内容写入文件我在 Mac Os X 10.14.6 上启动 glassfish 时遇到问题。
我安装了它
brew install glassfish
Run Code Online (Sandbox Code Playgroud)
然后我添加了
AS_JAVA="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home"
Run Code Online (Sandbox Code Playgroud)
在asenv.conf中以解决java空指针异常。
现在我收到以下错误:
$ ./asadmin start-domain domain1
Waiting for domain1 to start .Error starting domain domain1.
The server exited prematurely with exit code 1.
Before it died, it produced the following output:
-Djava.endorsed.dirs=/usr/local/Cellar/glassfish/5.1.0/libexec/glassfish/modules/endorsed:/usr/local/Cellar/glassfish/5.1.0/libexec/glassfish/lib/endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0 …Run Code Online (Sandbox Code Playgroud) 我收到 35=D (NewOrderSingle) 请求的拒绝响应。想知道可能是什么问题。我正在关注这个文件
FIX.4.4:Paragxxxx_FIX->CfhDemoPrices:Trade------client toApp-----------8=FIX.4.4 9=163 35=D 34=2 49=Paragxxxx_FIX 52=20200227-04:30:02.863 56=CfhDemoPrices 11=FGQ_MLM_01_20200225-08:48:28 21=1 38=10000 40=1 54=1 55=EURUSD 60=20200227-04:30:02.861 10=182
FIX.4.4:Paragxxxx_FIX->CfhDemoPrices:Trade------client else fromAdmin--------8=FIX.4.4 9=136 35=3 34=2 49=CfhDemoPrices 52=20200227-04:30:05.925 56=Paragxxxxx_FIX 45=2 58=Tag specified out of required order 371=50 372=D 373=14 10=042
Run Code Online (Sandbox Code Playgroud)
添加 SenderSubid ( 50 ) 后,下面是请求和响应
8=FIX.4.4 9=183 35=D 34=2 49=Paragxxxxxx_FIX 50=L6UtbRZvhwEFuZft 52=20200301-23:20:52.088 56=CfhDemoPrices 11=FGQ_MLM_01_20200225-08:48:28 21=1 38=10000 40=1 54=1 55=EURUSD 60=20200301-23:20:52.087 10=056
8=FIX.4.49=136 35=3 34=2 49=CfhDemoPrices 52=20200301-23:20:52.172 56=Paragxxxxxx_FIX 45=2 58=Tag specified out of required order 371=50 372=D 373=14 10=031
Run Code Online (Sandbox Code Playgroud) 当请求 ICE TradeCaptureReport 消息时,FIX 消息被“截断”。这导致我们没有使用消息的“重复组”(如派对、腿详细信息)。
我们还没有使用任何数据字典。解决此问题的任何解决方案。