本文整理汇总了Scala中com.lightbend.lagom.scaladsl.api.broker.Topic类的典型用法代码示例。如果您正苦于以下问题:Scala Topic类的具体用法?Scala Topic怎么用?Scala Topic使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Topic类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: HelloServiceImpl
//设置package包名称以及导入依赖的类
package sample.helloworld.impl
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import sample.helloworld.api.model.GreetingMessage
import sample.helloworld.api.HelloService
class HelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends HelloService {
override def hello(id: String) = ServiceCall { _ =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id, None))
}
override def useGreeting(id: String) = ServiceCall { request =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[GreetingMessage] = {
TopicProducer.singleStreamWithOffset {
offset =>
persistentEntityRegistry.eventStream(HelloEventTag.instance, offset)
.map(ev => (convertEvent(ev), offset))
}
}
private def convertEvent(helloEvent: EventStreamElement[HelloEvent]): GreetingMessage = {
helloEvent.event match {
case GreetingMessageChanged(msg) => GreetingMessage(msg)
}
}
}
示例2: useGreeting
//设置package包名称以及导入依赖的类
package sample.helloworld.api
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
import sample.helloworld.api.model.GreetingMessage
def useGreeting(id: String): ServiceCall[GreetingMessage, Done]
override final def descriptor = {
import Service._
// @formatter:off
named("hello").withCalls(
pathCall("/api/hello/:id", hello _),
pathCall("/api/hello/:id", useGreeting _)
).withTopics(
topic(HelloService.TOPIC_NAME, greetingsTopic)
).withAutoAcl(true)
// @formatter:on
}
// The topic handle
def greetingsTopic(): Topic[GreetingMessage]
}
object HelloService {
val TOPIC_NAME = "wordCount"
}
示例3: Item
//设置package包名称以及导入依赖的类
package demo.api.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Descriptor, Service, ServiceCall}
import com.lightbend.lagom.scaladsl.api.transport._
import demo.api.basket.ExtraTransportExceptions.CustomExceptionSerializer
import play.api.Environment
import play.api.libs.json.{Format, Json}
case class Item(name: String, price: Int)
object Item {
implicit val itemFormat: Format[Item] = Json.format
}
case class Basket(items: Seq[Item], total: Int)
object Basket {
implicit val basketFormat: Format[Basket] = Json.format
}
case class OrderPlaced(basketId: String, basket: Basket)
object OrderPlaced {
implicit val orderPlacedFormat: Format[OrderPlaced] = Json.format
}
trait BasketService extends Service {
def getBasket(basketId: String): ServiceCall[NotUsed, Basket]
def getTotal(basketId: String): ServiceCall[NotUsed, Int]
def addItem(basketId: String): ServiceCall[Item, NotUsed]
def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed]
def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed]
def placedOrders: Topic[OrderPlaced]
override def descriptor: Descriptor = {
import Method._
import Service._
named("basket").withCalls(
restCall(GET, "/basket/:basketId", getBasket _),
restCall(GET, "/basket/:basketId/total", getTotal _),
restCall(POST, "/basket/:basketId/items", addItem _),
restCall(DELETE, "/basket/:basketId/items", clearAll _),
restCall(POST, "/basket/:basketId/order", placeOrder _)
).withTopics(
topic("placed-orders", placedOrders)
).withExceptionSerializer(new CustomExceptionSerializer(Environment.simple()))
}
}
示例4: BasketServiceImpl
//设置package包名称以及导入依赖的类
package demo.impl.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.PersistentEntity.InvalidCommandException
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import demo.api.basket.{Basket, BasketService, ExtraTransportExceptions, Item}
import scala.collection.immutable
import scala.concurrent.ExecutionContext
class BasketServiceImpl(persistentEntities: PersistentEntityRegistry)(implicit ec: ExecutionContext)
extends BasketService with ExtraTransportExceptions{
override def getBasket(basketId: String): ServiceCall[NotUsed, Basket] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetBasket)
}
override def addItem(basketId: String): ServiceCall[Item, NotUsed] = ServiceCall { item =>
persistentEntities.refFor[BasketEntity](basketId).ask(AddItem(item))
.map(_ => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def getTotal(basketId: String): ServiceCall[NotUsed, Int] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetTotal)
}
override def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(ClearAll)
.map(x => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(PlaceOrder)
.map(x => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def placedOrders: Topic[demo.api.basket.OrderPlaced] =
TopicProducer.taggedStreamWithOffset(BasketEntityEvent.Tag.allTags.to[immutable.Seq]) { (tag, offset) =>
persistentEntities.eventStream(tag, offset).collect {
case EventStreamElement(t, OrderPlaced(id, basket), o) => {
demo.api.basket.OrderPlaced(id, basket) -> o
}
}
}
}
示例5: BasketServiceImpl
//设置package包名称以及导入依赖的类
package demo.impl.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.PersistentEntity.InvalidCommandException
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import demo.api.basket.{Basket, BasketService, ExtraTransportExceptions, Item}
import scala.collection.immutable
import scala.concurrent.ExecutionContext
class BasketServiceImpl(persistentEntities: PersistentEntityRegistry)(implicit ec: ExecutionContext)
extends BasketService with ExtraTransportExceptions{
override def getBasket(basketId: String): ServiceCall[NotUsed, Basket] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetBasket)
}
override def addItem(basketId: String): ServiceCall[Item, NotUsed] = ServiceCall { item =>
persistentEntities.refFor[BasketEntity](basketId).ask(AddItem(item))
.map(_ => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def getTotal(basketId: String): ServiceCall[NotUsed, Int] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetTotal)
}
override def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(ClearAll)
.map(x => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(PlaceOrder).map(_ => NotUsed)
}
override def placedOrders: Topic[demo.api.basket.OrderPlaced] =
TopicProducer.taggedStreamWithOffset(BasketEntityEvent.Tag.allTags.to[immutable.Seq]) { (tag, offset) =>
persistentEntities.eventStream(tag, offset).collect {
case EventStreamElement(t, OrderPlaced(id, basket), o) => {
demo.api.basket.OrderPlaced(id, basket) -> o
}
}
}
}
示例6: Item
//设置package包名称以及导入依赖的类
package demo.api.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Descriptor, Service, ServiceCall}
import com.lightbend.lagom.scaladsl.api.transport._
import play.api.libs.json.{Format, Json}
case class Item(name: String, price: Int)
object Item {
implicit val itemFormat: Format[Item] = Json.format
}
case class Basket(items: Seq[Item], total: Int)
object Basket {
implicit val basketFormat: Format[Basket] = Json.format
}
case class OrderPlaced(basketId: String, basket: Basket)
object OrderPlaced {
implicit val orderPlacedFormat: Format[OrderPlaced] = Json.format
}
trait BasketService extends Service {
def getBasket(basketId: String): ServiceCall[NotUsed, Basket]
def getTotal(basketId: String): ServiceCall[NotUsed, Int]
def addItem(basketId: String): ServiceCall[Item, NotUsed]
def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed]
def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed]
def placedOrders: Topic[OrderPlaced]
override def descriptor: Descriptor = {
import Method._
import Service._
named("basket").withCalls(
restCall(GET, "/basket/:basketId", getBasket _),
restCall(GET, "/basket/:basketId/total", getTotal _),
restCall(POST, "/basket/:basketId/items", addItem _),
restCall(DELETE, "/basket/:basketId/items", clearAll _),
restCall(POST, "/basket/:basketId/order", placeOrder _)
).withTopics(
topic("placed-orders", placedOrders)
)
}
}
示例7: BasketServiceImpl
//设置package包名称以及导入依赖的类
package demo.impl.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import demo.api.basket.{Basket, BasketService, Item}
import scala.collection.immutable
import scala.concurrent.ExecutionContext
class BasketServiceImpl(persistentEntities: PersistentEntityRegistry)(implicit ec: ExecutionContext)
extends BasketService {
override def getBasket(basketId: String): ServiceCall[NotUsed, Basket] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetBasket)
}
override def addItem(basketId: String): ServiceCall[Item, NotUsed] = ServiceCall { item =>
persistentEntities.refFor[BasketEntity](basketId).ask(AddItem(item)).map(_ => NotUsed)
}
override def getTotal(basketId: String): ServiceCall[NotUsed, Int] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetTotal)
}
override def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(ClearAll).map(x => NotUsed)
}
override def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(PlaceOrder).map(_ => NotUsed)
}
override def placedOrders: Topic[demo.api.basket.OrderPlaced] =
TopicProducer.taggedStreamWithOffset(BasketEntityEvent.Tag.allTags.to[immutable.Seq]) { (tag, offset) =>
persistentEntities.eventStream(tag, offset).collect {
case EventStreamElement(t, OrderPlaced(id, basket), o) => {
demo.api.basket.OrderPlaced(id, basket) -> o
}
}
}
}
示例8: createMonitor
//设置package包名称以及导入依赖的类
package org.wex.cmsfs.monitor.api
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
trait MonitorService extends Service {
def createMonitor: ServiceCall[Monitor, Monitor]
def monitorCollectEvents(): Topic[MonitorEvent]
override final def descriptor = {
import Service._
named("monitor").withCalls(
pathCall("/api/monitor", createMonitor _)
).withTopics(
topic("monitor-collect", monitorCollectEvents)
)
}
}
示例9: AddServiceImpl
//设置package包名称以及导入依赖的类
package com.orion.add.impl
import akka.Done
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import com.orion.add.api
import com.orion.add.api.AddService
class AddServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends AddService {
override def add(): ServiceCall[api.AddNumber, String] = ServiceCall { request =>
val ref = persistentEntityRegistry.refFor[NumberEntity]("constant")
ref.ask(AddNumber(request.number))
}
override def curry(): ServiceCall[api.CurryWith, Done] = ServiceCall { request =>
val ref = persistentEntityRegistry.refFor[NumberEntity]("constant")
ref.ask(CurryWith(request.number))
}
override def additionTopic(): Topic[api.CurriedWith] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(NumberEvent.Tags, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(numberEvent: EventStreamElement[NumberEvent]): api.CurriedWith = {
numberEvent.event match {
case CurriedWith(num) => api.CurriedWith(num)
}
}
}
示例10: SagaService
//设置package包名称以及导入依赖的类
package com.example.saga.api
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
import play.api.libs.json.{Format, Json}
object SagaService{
val EXONE_TOPIC_NAME = "sagaExOneEvents"
}
trait SagaService extends Service {
def sageExOneEvents(): Topic[SagaExOneEvent]
def begin: ServiceCall[SagaRequest, String]
override final def descriptor = {
import Service._
// @formatter:off
named("saga-lagom").withCalls(
pathCall("/api/saga/:id", getResult _),
pathCall("/api/saga", begin _)
).withTopics(
topic(SagaService.EXONE_TOPIC_NAME, sageExOneEvents)
).withAutoAcl(true)
// @formatter:on
}
}
case class SagaRequest(id: String)
object SagaRequest {
implicit val format: Format[SagaRequest] = Json.format[SagaRequest]
}
case class SagaResponse(id: String, value:String)
object SagaResponse {
implicit val format: Format[SagaResponse] = Json.format[SagaResponse]
}
case class SagaExOneEvent(id: String)
object SagaExOneEvent {
implicit val format: Format[SagaExOneEvent] = Json.format[SagaExOneEvent]
}
示例11: ExOneService
//设置package包名称以及导入依赖的类
package com.example.exone.api
import com.lightbend.lagom.scaladsl.api.Service
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.persistence.{AggregateEvent, AggregateEventTag, AggregateEventTagger}
import play.api.libs.json.{Format, Json}
object ExOneService {
val TOPIC_NAME = "exoneEvents"
}
trait ExOneService extends Service {
def exOneEvents(): Topic[ExOneEvent]
override final def descriptor = {
import Service._
named("exonedocs").withTopics(
topic(ExOneService.TOPIC_NAME, exOneEvents)
).withAutoAcl(true)
}
}
case class ExOneEvent(id:String, value:String) extends AggregateEvent[ExOneEvent]{
override def aggregateTag: AggregateEventTagger[ExOneEvent] = ExOneEvent.Tag
}
object ExOneEvent{
val NumShards = 4
val Tag = AggregateEventTag.sharded[ExOneEvent](4)
implicit val format: Format[ExOneEvent] = Json.format[ExOneEvent]
}
示例12: HelloServiceImpl
//设置package包名称以及导入依赖的类
package com.example.hello.impl
import com.example.hello.api
import com.example.hello.api.{HelloService}
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
class HelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends HelloService {
override def hello(id: String) = ServiceCall { _ =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id))
}
override def useGreeting(id: String) = ServiceCall { request =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[api.GreetingMessageChanged] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(HelloEvent.Tag, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(helloEvent: EventStreamElement[HelloEvent]): api.GreetingMessageChanged = {
helloEvent.event match {
case GreetingMessageChanged(msg) => api.GreetingMessageChanged(helloEvent.entityId, msg)
}
}
}
示例13: useGreeting
//设置package包名称以及导入依赖的类
package sample.helloworld.api
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Descriptor, Service, ServiceCall}
import sample.helloworld.api.model.GreetingMessage
def useGreeting(id: String): ServiceCall[GreetingMessage, Done]
override final def descriptor: Descriptor = {
import Service._
// @formatter:off
named("hello").withCalls(
pathCall("/api/hello/:id", hello _),
pathCall("/api/hello/:id", useGreeting _)
).withTopics(
topic(HelloService.TOPIC_NAME, greetingsTopic)
).withAutoAcl(true)
// @formatter:on
}
// The topic handle
def greetingsTopic(): Topic[GreetingMessage]
}
object HelloService {
val TOPIC_NAME = "wordCount"
}
示例14: HelloServiceImpl
//设置package包名称以及导入依赖的类
package sample.helloworld.impl
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import sample.helloworld.api.model.GreetingMessage
import sample.helloworld.api.HelloService
class HelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends HelloService {
override def hello(id: String): ServiceCall[NotUsed, _root_.sample.helloworld.impl.Hello#ReplyType] = ServiceCall { _ =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id, None))
}
override def useGreeting(id: String): ServiceCall[GreetingMessage, Done] = ServiceCall { request =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[GreetingMessage] = {
TopicProducer.singleStreamWithOffset {
offset =>
persistentEntityRegistry.eventStream(HelloEventTag.instance, offset)
.map(ev => (convertEvent(ev), offset))
}
}
private def convertEvent(helloEvent: EventStreamElement[HelloEvent]): GreetingMessage = {
helloEvent.event match {
case GreetingMessageChanged(msg) => GreetingMessage(msg)
}
}
}
示例15: GithubServiceImpl
//设置package包名称以及导入依赖的类
package com.onedrop.github.impl
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import com.onedrop.github
import com.onedrop.github.api.GithubService
class GithubServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends GithubService {
override def getOrg(org: String) = ServiceCall { _ =>
// Look up the github entity for the given ID.
val ref = persistentEntityRegistry.refFor[GithubEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id))
}
override def getMembers(org: String) = ServiceCall { request =>
// Look up the github entity for the given ID.
val ref = persistentEntityRegistry.refFor[GithubEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def getRepos(org: String): Topic[github.api.GreetingMessageChanged] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(GithubEvent.Tag, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(helloEvent: EventStreamElement[GithubEvent]): github.api.GreetingMessageChanged = {
helloEvent.event match {
case GreetingMessageChanged(msg) => github.api.GreetingMessageChanged(helloEvent.entityId, msg)
}
}
}