Sha256: 02ff4e6ced3acd35d986fd03f8f44f9d3f5f0666326915f3b79ecb73cab9ac27

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

require 'java'
require 'esper-4.5.0.jar'
require 'esper/commons-logging-1.1.1.jar'
require 'esper/antlr-runtime-3.2.jar'
require 'esper/cglib-nodep-2.2.jar'
require 'pp'

module Asakra
  # Create a listener object when matched
  class MyListener
    include com.espertech.esper.client.UpdateListener

    def update(newEvents, oldEvents)
      puts "matched: "
      newEvents.each do |event|
        puts "- " + event.getUnderlying.inspect
      end
    end
  end

  class Judge

    def initialize(listener)
      @listener = listener
      @ep_service = com.espertech.esper.client.EPServiceProviderManager.getDefaultProvider
    end

    def setting
    # And the configuration
      ep_config = @ep_service.getEPAdministrator.getConfiguration

    # event(POJO when using java)
    # Prepare the OrderEvent type
      order_event_type = {
          "pluginId" => "string",
          "retryCount" => "double"
      }
      ep_config.addEventType("OrderEvent", order_event_type)

    # EPLの設定
    # Create EPL expression
    #   expression = "select * from OrderEvent where cast(retryCount,double) > 1"
      expression = "select * from OrderEvent where cast(retryCount,double) > 1"
    #expression = "select avg(price) from OrderEvent"
      statement = @ep_service.getEPAdministrator.createEPL(expression)

    # Register listener to statement
    #   listener = Asakra::MyListener.new
      statement.addListener(@listener)
    end

    def send(metrics)

    # send event to listner
      epr_runtime = @ep_service.getEPRuntime
      epr_runtime.sendEvent(metrics, "OrderEvent")

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
asakra-0.0.4-java lib/asakra/judge.rb