为java中的actorsystem禁用akka.jvm-exit-on-fatal-error
发布时间:2020-12-14 05:53:33 所属栏目:Java 来源:网络整理
导读:我正在使用akka actor系统进行多线程处理.它在正常使用情况下工作正常.但是,Akka因致命错误而关闭了JVM.请告诉我如何配置Akka以禁用 java中的“akka.jvm-exit-on-fatal-error”.下面是代码. public class QueueListener implements MessageListener { privat
我正在使用akka actor系统进行多线程处理.它在正常使用情况下工作正常.但是,Akka因致命错误而关闭了JVM.请告诉我如何配置Akka以禁用
java中的“akka.jvm-exit-on-fatal-error”.下面是代码.
public class QueueListener implements MessageListener { private String _queueName=null; public static boolean isActorinit=false; public static ActorSystem system=null; private ActorRef myActor; public QueueListener(String actorId,String qName){ this._queueName = qName; if(!isActorinit){ system=ActorSystem.create(actorId); isActorinit=true; } myActor=system.actorOf( Props.create(MessageExecutor.class,qName),qName+"id"); } /* * (non-Javadoc) * @see javax.jms.MessageListener#onMessage(javax.jms.Message) */ @Override public void onMessage(Message msg) { executeRequest(msg); } /** This method will process the message fetch by the listener. * * @param msg - javax.jms.Messages parameter get queue message */ private void executeRequest(Message msg){ String requestData=null; try { if(msg instanceof TextMessage){ TextMessage textMessage= (TextMessage) msg; requestData = textMessage.getText().toString(); }else if(msg instanceof ObjectMessage){ ObjectMessage objMsg = (ObjectMessage) msg; requestData = objMsg.getObject().toString(); } myActor.tell(requestData,ActorRef.noSender()); } catch (JMSException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } 解决方法
在项目中创建application.conf文件(例如sr / main / resources)并添加以下内容:
akka { jvm-exit-on-fatal-error = false } 如果您已经有一个配置文件,则无需创建新配置文件,在这种情况下,它只是添加新条目: jvm-exit-on-fatal-error = false 小心.让JVM像OutOfMemory这样的致命错误后运行通常不是一个好主意,并导致严重的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |