Search in sources :

Example 1 with Task

use of io.atomix.core.workqueue.Task in project atomix by atomix.

the class DefaultWorkQueueServiceTest method testSnapshot.

@Test
public void testSnapshot() throws Exception {
    ServiceContext context = mock(ServiceContext.class);
    when(context.serviceType()).thenReturn(WorkQueueType.instance());
    when(context.serviceName()).thenReturn("test");
    when(context.serviceId()).thenReturn(PrimitiveId.from(1));
    Session session = mock(Session.class);
    when(session.sessionId()).thenReturn(SessionId.from(1));
    when(context.currentSession()).thenReturn(session);
    DefaultWorkQueueService service = new DefaultWorkQueueService();
    service.init(context);
    service.register(session);
    service.add(Arrays.asList("Hello world!".getBytes()));
    Buffer buffer = HeapBuffer.allocate();
    service.backup(new DefaultBackupOutput(buffer, service.serializer()));
    service = new DefaultWorkQueueService();
    service.init(context);
    service.register(session);
    service.restore(new DefaultBackupInput(buffer.flip(), service.serializer()));
    Collection<Task<byte[]>> value = service.take(1);
    assertNotNull(value);
    assertEquals(1, value.size());
    assertArrayEquals("Hello world!".getBytes(), value.iterator().next().payload());
}
Also used : Buffer(io.atomix.storage.buffer.Buffer) HeapBuffer(io.atomix.storage.buffer.HeapBuffer) Task(io.atomix.core.workqueue.Task) ServiceContext(io.atomix.primitive.service.ServiceContext) DefaultBackupOutput(io.atomix.primitive.service.impl.DefaultBackupOutput) Session(io.atomix.primitive.session.Session) DefaultBackupInput(io.atomix.primitive.service.impl.DefaultBackupInput) Test(org.junit.Test)

Example 2 with Task

use of io.atomix.core.workqueue.Task in project atomix by atomix.

the class DefaultWorkQueueService method add.

@Override
public void add(Collection<byte[]> items) {
    AtomicInteger itemIndex = new AtomicInteger(0);
    items.forEach(item -> {
        String taskId = String.format("%d:%d:%d", getCurrentSession().sessionId().id(), getCurrentIndex(), itemIndex.getAndIncrement());
        unassignedTasks.add(new Task<>(taskId, item));
    });
    // Send an event to all sessions that have expressed interest in task processing
    // and are not actively processing a task.
    registeredWorkers.forEach(sessionId -> getSession(sessionId).accept(client -> client.taskAvailable()));
// FIXME: This generates a lot of event traffic.
}
Also used : BackupInput(io.atomix.primitive.service.BackupInput) IntStream(java.util.stream.IntStream) Throwables.throwIfUnchecked(com.google.common.base.Throwables.throwIfUnchecked) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SessionId(io.atomix.primitive.session.SessionId) ImmutableList(com.google.common.collect.ImmutableList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Map(java.util.Map) WorkQueueStats(io.atomix.core.workqueue.WorkQueueStats) Session(io.atomix.primitive.session.Session) WorkQueueType(io.atomix.core.workqueue.WorkQueueType) Iterator(java.util.Iterator) Collection(java.util.Collection) MoreObjects(com.google.common.base.MoreObjects) Set(java.util.Set) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) AtomicLong(java.util.concurrent.atomic.AtomicLong) Queues(com.google.common.collect.Queues) Task(io.atomix.core.workqueue.Task) AbstractPrimitiveService(io.atomix.primitive.service.AbstractPrimitiveService) Namespace(io.atomix.utils.serializer.Namespace) BackupOutput(io.atomix.primitive.service.BackupOutput) Queue(java.util.Queue) ArrayDeque(java.util.ArrayDeque) Serializer(io.atomix.utils.serializer.Serializer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger)

Aggregations

Task (io.atomix.core.workqueue.Task)2 Session (io.atomix.primitive.session.Session)2 MoreObjects (com.google.common.base.MoreObjects)1 Throwables.throwIfUnchecked (com.google.common.base.Throwables.throwIfUnchecked)1 ImmutableList (com.google.common.collect.ImmutableList)1 Maps (com.google.common.collect.Maps)1 Queues (com.google.common.collect.Queues)1 Sets (com.google.common.collect.Sets)1 WorkQueueStats (io.atomix.core.workqueue.WorkQueueStats)1 WorkQueueType (io.atomix.core.workqueue.WorkQueueType)1 AbstractPrimitiveService (io.atomix.primitive.service.AbstractPrimitiveService)1 BackupInput (io.atomix.primitive.service.BackupInput)1 BackupOutput (io.atomix.primitive.service.BackupOutput)1 ServiceContext (io.atomix.primitive.service.ServiceContext)1 DefaultBackupInput (io.atomix.primitive.service.impl.DefaultBackupInput)1 DefaultBackupOutput (io.atomix.primitive.service.impl.DefaultBackupOutput)1 SessionId (io.atomix.primitive.session.SessionId)1 Buffer (io.atomix.storage.buffer.Buffer)1 HeapBuffer (io.atomix.storage.buffer.HeapBuffer)1 Namespace (io.atomix.utils.serializer.Namespace)1