나는 매우 낮은 대기 시간의 프로그램을 가지고 있으며 Windows COM 구성 요소와 인터페이스해야합니다. 이 작업을 수행하는 가장 빠른 방법은 무엇입니까? JACOB과 같은 COM 브리지를 사용하거나 네이티브 COM 라이브러리를 작성하고 ZeroMQ와 같은 메시징 버스를 사용하여 메시지를 보냅니 까?자바 COM 브리지
답변
ZeroMQ를 사용하면 두 가지 프로세스가 처리됩니다. 그리고 한 프로세스에서 다른 프로세스로 메시지를 전달하는 것은 동일한 프로세스 내에서 동일한 프로세스를 수행하는 것보다 비용이 많이 듭니다. 따라서 Java COM 브리지를 사용하면 대기 시간이 단축됩니다.
그렇지만 매우 낮은 대기 시간을 처리하는 경우에만 관련이 있습니다. COM 구성 요소가 이미 네트워크를 통해 메시지를 수신하고 전달 중이거나 값 비싼 계산을 수행하고 있기 때문에 프로세스 간 메시지 전달보다 몇 배나 높은 대기 시간이있는 경우 두 옵션 모두 전체에 미치는 영향이 큽니다. 숨어 있음.
JACOB은 모든 COM 구성 요소를 지원하지는 않으며 COM 자동화 인터페이스가있는 구성 요소 만 지원합니다. 따라서 JCom과 같은 다른 Java COM 브리지를 사용해야 할 수도 있습니다.
COM 브리지는 로컬 메시징과 함께 기본 COM 구성 요소 및 ZeroMQ를 사용하는 것보다 확실히 지연 시간이 짧습니까? Java에서 COM을 사용하는 데 약간의 오버 헤드가있을 것이라고 생각했을까요? –
in-process COM 구성 요소의 오버 헤드는 매우 낮으며 Java 프로세스 또는 ZeroMQ 프로세스에서 두 가지 설정 모두에서 사용할 수 있습니다. Java-to-COM 브리징을위한 추가 오버 헤드는 사용하는 브리징 제품에 따라 다르지만 기본 코드를 두 번 또는 세 번 호출하는 것과 유사해야합니다. 다시 한번 말씀 드리면, Java-to-COM 브릿지에 있거나 ZeroMQ에서 메시지를받을 때입니다. 그러나 ZeroMQ 솔루션에는 메시지를 보내고 다른 프로세스로 전송하고 프로세스 컨텍스트를 전환하는 추가 비용이 있습니다. – Codo
나는 왜이 두 옵션이 같은 결과를 얻는 지 알 수 없다. 당신이 원하는 것을 더 잘 표현할 수 있습니까? COM 구성 요소는 무엇입니까? 가능한 낮은 대기 시간 어딘가에서 반환해야하는 COM 구성 요소의 결과가 있습니까? – Codo
Codo ... Java 프로그램에 전파해야하는 타사 COM 구성 요소를 통해 이벤트를 수신하고 있습니다 (실제 데이터는 매우 작습니다 ... 단지 몇 배 정도). 가능한 한 빨리이 작업을 수행해야합니다. –