View Javadoc
1   /*
2    * The contents of this file are subject to the terms of the Common Development and
3    * Distribution License (the License). You may not use this file except in compliance with the
4    * License.
5    *
6    * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
7    * specific language governing permission and limitations under the License.
8    *
9    * When distributing Covered Software, include this CDDL Header Notice in each file and include
10   * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
11   * Header, with the fields enclosed by brackets [] replaced by your own identifying
12   * information: "Portions copyright [year] [name of copyright owner]".
13   *
14   * Copyright 2016 ForgeRock AS.
15   */
16  package org.forgerock.audit.handlers.jms;
17  
18  import com.fasterxml.jackson.annotation.JsonPropertyDescription;
19  
20  /**
21   * This class holds the configuration properties that are used by the {#link BatchPublisher} to control the batch queue
22   * and worker threads that process the items in the queue.
23   */
24  public class BatchPublisherConfiguration {
25  
26      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.batchEnabled")
27      private boolean batchEnabled = false;
28  
29      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.capacity")
30      private int capacity = 1;
31  
32      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.threadCount")
33      private int threadCount = 1;
34  
35      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.maxBatchedEvents")
36      private int maxBatchedEvents = 1;
37  
38      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.insertTimeoutSec")
39      private long insertTimeoutSec = 60L;
40  
41      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.pollTimeoutSec")
42      private long pollTimeoutSec = 10L;
43  
44      @JsonPropertyDescription("audit.handlers.jms.publisher.batch.shutdownTimeoutSec")
45      private long shutdownTimeoutSec = 60L;
46  
47      /**
48       * Returns the maximum capacity of the publishing queue.  Execution will block if the queue size is at capacity.
49       *
50       * @return the maximum capacity of the publishing queue
51       */
52      public int getCapacity() {
53          return capacity;
54      }
55  
56      /**
57       * Sets the maximum capacity of the publishing queue.
58       *
59       * @param capacity the maximum capacity of the publishing queue
60       */
61      public void setCapacity(int capacity) {
62          this.capacity = capacity;
63      }
64  
65      /**
66       * Returns the count of worker threads to have processing the queue.
67       *
68       * @return the count of worker threads to have processing the queue.
69       */
70      public int getThreadCount() {
71          return threadCount;
72      }
73  
74      /**
75       * Sets the count of worker threads to have processing the queue.
76       *
77       * @param threadCount the count of worker threads to have processing the queue.
78       */
79      public void setThreadCount(int threadCount) {
80          this.threadCount = threadCount;
81      }
82  
83      /**
84       * Returns the maximum count of events that will be expected to be delivered in a single publish call.
85       *
86       * @return the maximum count of events that will be expected to be delivered in a single publish call.
87       */
88      public int getMaxBatchedEvents() {
89          return maxBatchedEvents;
90      }
91  
92      /**
93       * Sets the maximum count of events that will be expected to be delivered in a single publish call.
94       *
95       * @param maxBatchedEvents the maximum count of events
96       */
97      public void setMaxBatchedEvents(int maxBatchedEvents) {
98          this.maxBatchedEvents = maxBatchedEvents;
99      }
100 
101     /**
102      * Returns the timeout in seconds the duration that the queue should block while attempting to offer a new item
103      * for the queue.
104      *
105      * @return timeout in seconds
106      */
107     public long getInsertTimeoutSec() {
108         return insertTimeoutSec;
109     }
110 
111     /**
112      * Sets the timeout in seconds the duration that the queue should block while attempting to offer a new item
113      * for the queue.
114      *
115      * @param insertTimeoutSec timeout in seconds
116      */
117     public void setInsertTimeoutSec(long insertTimeoutSec) {
118         this.insertTimeoutSec = insertTimeoutSec;
119     }
120 
121     /**
122      * Returns the timeout in seconds for the worker threads to wait for a new item to be available in the queue
123      * before exiting.
124      *
125      * @return timeout in seconds
126      */
127     public long getPollTimeoutSec() {
128         return pollTimeoutSec;
129     }
130 
131     /**
132      * Sets the timeout in seconds for the worker threads to wait for a new item to be available in the queue before
133      * exiting.
134      *
135      * @param pollTimeoutSec timeout in seconds
136      */
137     public void setPollTimeoutSec(long pollTimeoutSec) {
138         this.pollTimeoutSec = pollTimeoutSec;
139     }
140 
141     /**
142      * Returnds the timeout in seconds for the publisher to wait for all worker threads to terminate at shutdown.
143      *
144      * @return timeout in seconds
145      */
146     public long getShutdownTimeoutSec() {
147         return shutdownTimeoutSec;
148     }
149 
150     /**
151      * Sets  the timeout in seconds for the publisher to wait for all worker threads to terminate at shutdown.
152      *
153      * @param shutdownTimeoutSec timeout in seconds
154      */
155     public void setShutdownTimeoutSec(long shutdownTimeoutSec) {
156         this.shutdownTimeoutSec = shutdownTimeoutSec;
157     }
158 
159     /**
160      * Returns true if handling of audit events should be done in batches.
161      *
162      * @return true if handling of audit events should be done in batches.
163      */
164     public boolean isBatchEnabled() {
165         return batchEnabled;
166     }
167 
168     /**
169      * sets if handling of audit events should be done in batches.
170      *
171      * @param batchEnabled true if handling of audit events should be done in batches.
172      */
173     public void setBatchEnabled(boolean batchEnabled) {
174         this.batchEnabled = batchEnabled;
175     }
176 }